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

Regras de solicitação e cache HTTP

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 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
  2. 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
  3. 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
  4. 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 "*"
          }
      }
    }
    
  5. 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”
    }
    
  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 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”
    }
    
  7. 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” }
    }
    

Resposta HTTP e regras de cache:

A resposta HTTP retornada do AEM poderá 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.

    Nota: Se não /timeout está definido no /renders ou está definido como 0, então aguardaria para sempre uma conexão com a instância do AEM mesmo se a instância estiver 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 OK
    em cache
    Solicitação HTTP:

    Página 404 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:

    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 cache
    não armazenado em cache
    Resposta HTTP:

    200 OK

    Cache-control: sem 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 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: 0
    não armazenado em cache
    Resposta HTTP:

    200 OK

    Comprimento do conteúdo: 3120
    em cache
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f