Quais solicitações o AEM Dispatcher armazena em cache?
Este artigo determina por que e quais solicitações/respostas HTTP não estão sendo armazenadas em cache pelo AEM Dispatcher.
Descrição description
Ambiente
AEM Dispatcher 4.3.3
Problema
A documentação abrange os cenários mais importantes que afetam a capacidade de cache das solicitações e respostas que passam pelo módulo AEM Dispatcher. Todas as regras de cache não são cobertas.
Resolução resolution
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 funciona com . ou …), tem uma extensão de arquivo e o nome de arquivo no URL funciona como um arquivo no sistema de arquivos.
Mensagens de log relacionadas:
code language-none 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:
table 0-row-2 1-row-2 /content/test
not cached
/content/test.html
cached
-
Ela não tem barras após a primeira extensão de arquivo.
Mensagens de log relacionadas:
code language-none request URL has trailing slash
Exemplos:
table 0-row-2 1-row-2 2-row-2 /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:
code language-none request method is neither GET nor HEAD
Exemplos:
table 0-row-2 1-row-2 2-row-2 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 =
>
/RULES definido no dispatcher. QUALQUER CONFIGURAÇÃO DE FARM.Mensagens de log relacionadas:
code language-none URI not in cache rules: %s request URL not in cache rules
Exemplos:
a. Não armazenado em cache
code language-none Farm has /cache => /rules and a request is received for /content/test.html /cache { ... /rules { /0001 { type "deny" glob "*" } } }
b. Em cache
code language-none Farm has /cache => /rules and a request is received for /content/test.html /cache { ... /rules { /0001 { type "allow" glob "*" } } }
-
A solicitação HTTP não contém um cabeçalho de autorização ou contém o cabeçalho, mas /ALLOWAUTHORIZED está definido como 1 na CONFIGURAÇÃO DO FARM.
Mensagens de log relacionadas:
code language-none request contains authorization
Exemplos:
a. Não armazenado em cache
code language-none HTTP Request: GET /content/test.html HTTP/1.1 Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l dispatcher.any farm /cache => /allowAuthorized configuration: /cache { /allowAuthorized “0” }
b. Em cache
code language-none HTTP Request: GET /content/test.html HTTP/1.1 Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l dispatcher.any farm /cache => /allowAuthorized configuration: /cache { /allowAuthorized “1” }
-
A solicitação HTTP contém o token de logon ou o cookie de autorização no cabeçalho do cookie, ou contém um (ou ambos) desses cookies, e /ALLOWAUTHORIZED é definido como 1 na CONFIGURAÇÃO DO FARM.
Mensagens de log relacionadas:
code language-none request contains authorization
Exemplos:
a. Não armazenado em cache
code language-none HTTP Request: GET /content/test.html HTTP/1.1 Cookie: login-token=... dispatcher.any farm /cache = /allowAuthorized configuration: /cache { /allowAuthorized “0” }
code language-none HTTP Request: GET /content/test.html HTTP/1.1 Cookie: authorization= YWxhZGRpbjpvcGVuc2VzYW1l dispatcher.any farm /cache = /allowAuthorized configuration: /cache { /allowAuthorized “0” }
b. Em cache
code language-none HTTP Request: GET /content/test.html HTTP/1.1 Cookie: login-token=... dispatcher.any farm /cache => /allowAuthorized configuration: /cache { /allowAuthorized “1” }
-
Há um parâmetro QUERYSTRING no URL e o parâmetro pode ser ignorado por meio da CONFIGURAÇÃO /IGNOREURLPARAMS do FARM.
Mensagens de log relacionadas:
code language-none request contains a query string
Exemplos:
a. Em cache
code language-none HTTP Request: GET /content/test.html?test=1 HTTP/1.1 Farm /cache configuration: /ignoreUrlParams { /0001 { /type “allow” /glob “*” } }
code language-none HTTP Request: GET /content/test.html?test=1 HTTP/1.1 Farm /cache configuration: /ignoreUrlParams { /0001 { /type “deny” /glob “*” } /0001 { /type “allow” /glob “test” } }
b. Não armazenado em cache
code language-none HTTP Request: GET /content/test.html?test=1 HTTP/1.1 dispatcher.any farm /cache = /allowAuthorized configuration: /ignoreUrlParams { /0001 { /type “deny” /glob “*” } /0001 { /type “allow” /glob “q” } }
Regras de Cache e Resposta HTTP:
A resposta HTTP retornada do AEM poderá 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 nenhum /timeout estiver definido no /renders ou estiver definido como 0, ele aguardará para sempre uma conexão com a instância do AEM, mesmo que a instância esteja inativa.
Mensagens de log relacionadas:
code language-none Unable to send request to remote server. Unable to receive response from remote server. Remote server returned: %s No backend available.
Exemplos:
table 0-row-2 1-row-2 Solicitação HTTP:
200 OKem cache Solicitação HTTP:
Página 404 Não Encontradanã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:
code language-none Backend forbids caching: %s, sent: %s" response contains no_cache
Exemplos:
table 0-row-2 1-row-2 2-row-2 3-row-2 Resposta HTTP:
200 OK
Dispatcher: sem cachenão armazenado em cache Resposta HTTP:
200 OK
Cache-control: sem cachenão armazenado em cache Resposta HTTP:
200 OK
Pragma: sem cachenão armazenado em cache Resposta HTTP:
200 OKem cache -
O valor de comprimento do conteúdo é maior que ZERO BYTES.
Mensagens de log relacionadas:code language-none response content length is zero
Exemplos:
table 0-row-2 1-row-2 Resposta HTTP:
200 OK
Tamanho do conteúdo: 0não armazenado em cache Resposta HTTP:
200 OK
Comprimento do conteúdo: 3120em cache