Quais solicitações AEM o Dispatcher armazena em cache?

Descrição

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.

Resolução

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:

  1. 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
  2. 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
  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 cached
    GET /content/dam/test.jpg HTTP/1.1 not cached
    POST /content/test.html HTTP/1.1 not cached
  4. 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
  5. 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
  6. 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
  7. 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:

  1. 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
  2. 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
  3. 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

Nesta página