AEM ¿Qué solicitudes almacena en caché el Dispatcher de la?

AEM Este artículo determina por qué Dispatcher no almacena en caché las solicitudes/respuestas HTTP y por qué lo hace.

Descripción description

Entorno

AEM Dispatcher 4.3.3

Problema

AEM La documentación cubre los escenarios más importantes que afectan a la capacidad de caché de las solicitudes y respuestas que pasan por el módulo de Dispatcher de. No se cubren todas las reglas de caché.

Resolución resolution

Solicitudes HTTP y reglas de almacenamiento en caché

Para que Dispatcher pueda almacenar en caché una solicitud HTTP, debe cumplir las siguientes reglas:

  1. La dirección URL es absoluta (no funciona con ). o …), tiene una extensión de archivo y el nombre de archivo de la URL funciona como un archivo en el sistema de archivos.

    Mensajes de registro relacionados:

    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
    

    Ejemplos:

    table 0-row-2 1-row-2
    /content/test not cached
    /content/test.html cached
  2. No tiene barras diagonales después de la primera extensión de archivo.

    Mensajes de registro relacionados:

    code language-none
    request URL has trailing slash
    

    Ejemplos:

    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. Utiliza el método de HEAD o GET HTTP.

    Mensajes de registro relacionados:

    code language-none
    request method is neither GET nor HEAD
    

    Ejemplos:

    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. /CACHE = rechaza la solicitud> /RULES definido en Dispatcher. CUALQUIER CONFIGURACIÓN DE GRANJA.

    Mensajes de registro relacionados:

    code language-none
    URI not  in cache rules: %s request URL not in cache rules
    

    Ejemplos:

    a. No almacenado en caché

    code language-none
    Farm has /cache => /rules and a request is received for /content/test.html
    /cache
    {
      ...
      /rules
      {
        /0001 {
          type "deny"
          glob "*"
          }
      }
    }
    

    b. Almacenado en caché

    code language-none
    Farm has /cache => /rules and a request is received for /content/test.html
    /cache
    {
      ...
      /rules
      {
        /0001 {
          type "allow"
          glob "*"
          }
      }
    }
    
  5. La solicitud HTTP no contiene un encabezado de autorización o contiene el encabezado, pero /ALLOWAUTHORIZED se establece en 1 en la CONFIGURACIÓN DE GRANJA.

    Mensajes de registro relacionados:

    code language-none
    request contains authorization
    

    Ejemplos:

    a. No almacenado en caché

    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. Almacenado en caché

    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. La solicitud HTTP contiene un token de inicio de sesión o una cookie de autorización en el encabezado de la cookie, o bien contiene una o ambas cookies y /ALLOWAUTHORIZED se establece en 1 en la CONFIGURACIÓN DE LA GRANJA.

    Mensajes de registro relacionados:

    code language-none
    request contains authorization
    

    Ejemplos:

    a. No almacenado en caché

    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. Almacenado en caché

    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. Hay un parámetro QUERYSTRING en la URL y se permite ignorar el parámetro a través de la CONFIGURACIÓN /IGNOREURLPARAMS de la GRANJA.

    Mensajes de registro relacionados:

    code language-none
    request contains a query string
    

    Ejemplos:

    a. Almacenado en caché

    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. No almacenado en caché

    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” }
    }
    

Respuesta HTTP y reglas de almacenamiento en caché:

AEM La respuesta HTTP devuelta desde el repositorio se puede almacenar en caché si se cumplen los siguientes criterios:

  1. El despachante puede enviar y recibir una respuesta 200 OK de uno de los "RENDERS" definidos.

    Nota: Si no /timeout AEM se establece en /renders o se establece en 0, entonces esperaría para siempre una conexión a la instancia de aunque la instancia esté caída.

    Mensajes de registro relacionados:

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

    Ejemplos:

    table 0-row-2 1-row-2
    Solicitud HTTP:

    200 OK
    en caché
    Solicitud HTTP:

    404 Página no encontrada
    no almacenado en caché
  2. Ninguno de estos encabezados de respuesta está presente en la respuesta:

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

    Mensajes de registro relacionados:

    code language-none
    Backend forbids caching: %s, sent: %s" response contains no_cache
    

    Ejemplos:

    table 0-row-2 1-row-2 2-row-2 3-row-2
    Respuesta HTTP:

    200 OK

    Dispatcher: sin caché
    no almacenado en caché
    Respuesta HTTP:

    200 OK

    Cache-control: sin caché
    no almacenado en caché
    Respuesta HTTP:

    200 OK

    Pragma: sin caché
    no almacenado en caché
    Respuesta HTTP:

    200 OK
    en caché
  3. El valor de Content-length es mayor que CERO BYTES.
    Mensajes de registro relacionados:

    code language-none
    response content length is zero
    

    Ejemplos:

    table 0-row-2 1-row-2
    Respuesta HTTP:

    200 OK

    Content-Length: 0
    no almacenado en caché
    Respuesta HTTP:

    200 OK

    Content-Length: 3120
    en caché
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f