Ambiente
AEM Dispatcher 4.3.3
Problema
Este artigo determina por que a solicitação/resposta HTTP não está sendo armazenada em cache pelo Dispatcher AEM.
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 AEM. Todas as regras de cache não são abordadas.
Solicitação HTTP e regras de cache
Para que uma solicitação HTTP possa ser armazenada em cache pelo dispatcher, ela deve seguir as seguintes regras:
O URL é absoluto (não está funcionando com . ou …), tem uma extensão de arquivo e o nome do arquivo no 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 |
not cached |
---|---|
/content/test.html |
cached |
Não tem barras após a primeira extensão de arquivo.
Mensagens de log relacionadas:
request URL has trailing slash
Exemplos:
/content/test.html/ |
not cached |
---|---|
/content/test.html/foo.jpg |
not cached |
/content/test.html |
cached |
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 |
cached |
---|---|
GET /content/dam/test.jpg HTTP/1.1 |
not cached |
POST /content/test.html HTTP/1.1 |
not cached |
A solicitação é negada por /CACHE = /REGRAS definidas no dispatcher. 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 { tipo "negar" glob "*" } } } |
não armazenado em cache |
---|---|
O farm tem /cache = /rules e uma solicitação é recebida para /content/test.html /cache { … /rules { /0001 { tipo "allow" glob "*" } } } |
em cache |
A solicitação 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 DE FARM.
Mensagens de log relacionadas:
request contains authorization
Exemplos:
<br> HTTP Request:<br> GET /content/test.html HTTP/1.1<br> Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l<br> dispatcher.any farm /cache = /allowAuthorized configuration:<br> /cache {<br> /allowAuthorized “0”<br> }<br> |
not cached |
---|---|
<br> HTTP Request:<br> GET /content/test.html HTTP/1.1<br> Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l<br> dispatcher.any farm /cache = /allowAuthorized configuration:<br> /cache {<br> /allowAuthorized “1”<br> }<br> |
cached |
A solicitação HTTP contém o token de logon ou o cookie de autorização no cabeçalho do cookie, ou contém (ou ambos) esses cookies, e /ALLOWAUTHORIZED é definido como 1 na CONFIGURAÇÃO DO FARM.
Mensagens de log relacionadas:
request contains authorization
Exemplos:
<br> HTTP Request:<br> GET /content/test.html HTTP/1.1<br> Cookie: login-token=...<br> dispatcher.any farm /cache = /allowAuthorized configuration:<br> /cache {<br> /allowAuthorized “0”<br> }<br> |
not cached |
---|---|
<br> HTTP Request:<br> GET /content/test.html HTTP/1.1<br> Cookie: authorization= YWxhZGRpbjpvcGVuc2VzYW1l<br> dispatcher.any farm /cache = /allowAuthorized configuration:<br> /cache {<br> /allowAuthorized “0”<br> }<br> |
not cached |
<br> HTTP Request:<br> GET /content/test.html HTTP/1.1<br> Cookie: login-token=...<br> dispatcher.any farm /cache = /allowAuthorized configuration:<br> /cache {<br> /allowAuthorized “1”<br> }<br> |
cached |
Há um parâmetro QUERYSTRING no URL e o parâmetro pode ser ignorado por meio da CONFIGURAÇÃO DE FARM /IGNOREURLPARAMS.
Mensagens de log relacionadas:
request contains a query string
Exemplos:
Solicitação HTTP:<br> GET /content/test.html?test=1 HTTP/1.1<br> Farm /cache configuration:<br> <br> /ignoreUrlParams {<br> /0001 { /type “allow” /glob “*” }<br> }<br> |
em cache |
---|---|
Solicitação HTTP:<br> GET /content/test.html?test=1 HTTP/1.1<br> Farm /cache configuration:<br> <br> /ignoreUrlParams {<br> /0001 { /type “deny” /glob “*” } <br> <br> /0001 { /type “allow” /glob “test” }<br> }<br> |
em cache |
Solicitação HTTP:<br> GET /content/test.html?test=1 HTTP/1.1<br> dispatcher.any farm /cache = /allowAuthorized configuration:<br> <br> /ignoreUrlParams {<br> <br> /0001 { /type “deny” /glob “*” } <br> <br> /0001 { /type “allow” /glob “q” }<br> }<br> |
não armazenado em cache |
Resposta HTTP e regras de cache:
A resposta HTTP retornada do AEM pode ser armazenada em cache se os seguintes critérios forem atendidos:
O dispatcher pode enviar e receber uma resposta 200 OK de um dos "RENDERS" definidos.
Observação: Se não /timeout estiver definido em /renders ou estiver definido como 0, aguardará para sempre uma conexão com a instância AEM mesmo se a instância estiver inativa.
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 |
Nenhum desses cabeçalhos de resposta está presente na resposta:
Dispatcher: no-cache
Cache-control: no-cache
Pragma: no-cache
Mensagens de log relacionadas:
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 Controle de cache: no-cache |
não armazenado em cache |
Resposta HTTP: 200 OK Pragma: no-cache |
não armazenado em cache |
Resposta HTTP: 200 OK |
em cache |
O valor de comprimento do conteúdo é maior que ZERO BYTES.
Mensagens de log relacionadas:
response content length is zero
Exemplos:
Resposta HTTP: 200 OK Duração do conteúdo: 0 |
não armazenado em cache |
---|---|
Resposta HTTP: 200 OK Duração do conteúdo: 3120 |
em cache |