Ambiente

Dispatcher AEM 4.2.3

Pergunta

Quais solicitações e respostas HTTP fazem o cache do Dispatcher do AEM?

Resposta

A documentação abrange os cenários mais importantes que afetam a capacidade de cache de solicitações e respostas que passam pelo módulo Dispatcher do AEM. Todas as regras de cache não são cobertas.

Solicitação HTTP e regras de cache:

Para que uma solicitação HTTP seja armazenada em cache pelo dispatcher, ela deve seguir as seguintes regras.

1. URL é absoluto (não começando com . ou ..), tem uma extensão de arquivo e o nome do arquivo na url funciona como um arquivo no sistema de arquivos.

Mensagens de log relacionadas:

URI not canonical: %s.
Unable to map URI to file: %s.
cache file path too long
temporary file path too long
request URL has no extension

Exemplos:

/content/test não armazenado em cache
/content/test.html em cache

2. Não possui barras após a primeira extensão de arquivo.

Mensagens de log relacionadas:

request URL has trailing slash

Exemplos:

/content/test.html/ não armazenado em cache
/content/test.html/foo.jpg não armazenado em cache
/content/test.html em cache

3. Ele usa o método HTTP GET ou HEAD.

Mensagens de log relacionadas:

request method is neither GET nor HEAD

Exemplos:

HEAD /content/test.html HTTP/1.1 em cache
GET /content/dam/test.jpg HTTP/1.1 não armazenado em cache
POST /content/test.html HTTP/1.1 não armazenado em cache

4. A solicitação é negada por /cache => /rules definidas no dispatcher em qualquer configuração de farm.

Mensagens de log relacionadas:

URI not in cache rules: %s
request URL not in cache rules

Exemplos:

O farm tem /cache => /rules e uma solicitação é recebida para /content/test.html

/cache

{

  ...

  /rules

  {

    /0001 {

      type "deny"

      glob "*"

  }

}

não armazenado em cache

O farm tem /cache => /rules e um pedido é recebido para /content/test.html

/cache

{

  ...

  /rules

  {

    /0001 {

      tipo "allow"

      glob "*"

  }

}

em cache

5. A solicitação de HTTP não contém um cabeçalho de autorização ou contém o cabeçalho, mas /allowAuthorized é definido como 1 na configuração do farm.

Mensagens de log relacionadas:

request contains authorization

Exemplos:

Solicitação HTTP:

GET /content/test.html HTTP / 1.1
Autorização: Básico YWxhZGRpbjpvcGVuc2VzYW1l

configuração dispatcher.any farm /cache => /allowAuthorized:

/cache {
/allowAuthorized "0"
}

não armazenado em cache

Solicitação HTTP:

GET /content/test.html HTTP/1.1
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

configuração dispatcher.any farm /cache => /allowAuthorized:

/cache {
/allowAuthorized "1"
}

em cache

6. A solicitação HTTP contém o cookie de login ou de autorização no cabeçalho Cookie ou ele contém (ou ambos) esses cookies e /allowAuthorized é definido como 1 na configuração do farm.

Mensagens de log relacionadas:

request contains authorization

Exemplos:

Mensagem de log relacionada:

Exemplos:

Solicitação HTTP:

GET /content/test.html HTTP/1.1
Cookie: login-token=...

configuração dispatcher.any farm /cache => /allowAuthorized:

/cache {
/allowAuthorized "0"
}

não armazenado em cache

Solicitação HTTP:

GET /content/test.html HTTP/1.1
Cookie: authorization=YWxhZGRpbjpvcGVuc2VzYW1l

configuração dispatcher.any farm /cache => /allowAuthorized:

/cache {
/allowAuthorized "0"
}

não armazenado em cache

Solicitação HTTP:

GET /content/test.html HTTP/1.1
Cookie: login-token=...

configuração dispatcher.any farm /cache => /allowAuthorized:

/cache {
/allowAuthorized "1"
}

em cache

7. Há um parâmetro querystring na URL e o parâmetro pode ser ignorado por meio da configuração / ignoreUrlParams do farm.

Mensagens de log relacionadas:

request contains a query string

Exemplos:

Solicitação HTTP:

GET /content/test.html?test=1 HTTP/1.1

Configuração de farm /cache:

/ignoreUrlParams {
/0001 { /type "allow" /glob "*" }
}

em cache

Solicitação HTTP:

GET /content/test.html?test=1 HTTP/1.1

Configuração de farm /cache:

/ignoreUrlParams {
/0001 { /type "deny" /glob "*" }
/0001 { /type "allow" /glob "test" }
}

em cache

Solicitação HTTP:

GET /content/test.html?test=1 HTTP/1.1

configuração dispatcher.any farm /cache => /allowAuthorized:

/ignoreUrlParams {
/0001 { /type "deny" /glob "*" }
/0001 { /type "allow" /glob "q" }
}

não armazenado em cache

Resposta HTTP e Regras de Cache:

A resposta HTTP retornada do AEM é armazenável em cache se os seguintes critérios forem atendidos.

1. O expedidor pode enviar e receber uma resposta 200 OK a partir de um dos "renders" definidos.

Observação:

Se nenhum /timeout está definido no /renders ou está definido para 0 então, ele esperaria para sempre uma conexão com a instância do AEM, mesmo se a instância estivesse inoperante.

Mensagens de log relacionadas:

Unable to send request to remote server.
Unable to receive response from remote server.
Remote server returned: %s
No backend available.

Exemplos:

Solicitação HTTP:

200 OK

em cache

Solicitação HTTP:

404 Página Não Encontrada

não armazenado em cache

2. Nenhum desses cabeçalhos de resposta está presente na resposta:

  • Dispatcher: no-cache
  • Cache-control: no-cache
  • Pragma: sem cache

Mensagem de log relacionada:

Backend forbids caching: %s, sent: %s"
response contains no_cache

Exemplos:

Resposta HTTP:

200 OK
Dispatcher: no-cache

não armazenado em cache

Resposta HTTP:

200 OK
Cache-control: no-cache

não armazenado em cache

Resposta HTTP:

200 OK
Pragma: sem cache

não armazenado em cache

Resposta HTTP:

200 OK

em cache

3. O valor do comprimento do conteúdo é maior que zero bytes.

Mensagem de log relacionada:

response content length is zero

Exemplos:

Resposta HTTP:

200 OK
Content-Length: 0

não armazenado em cache

Resposta HTTP:

200 OK
Content-Length: 3120

em cache

Esta obra está licenciada sob uma licença não adaptada da Creative Commons Attribution-Noncommercial-Share Alike 3.0  As publicações do Twitter™ e do Facebook não são cobertas pelos termos do Creative Commons.

Avisos legais   |   Política de privacidade online