AEM Este artículo determina por qué Dispatcher no almacena en caché las solicitudes/respuestas HTTP y por qué lo hace.
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é.
Solicitudes HTTP y reglas de almacenamiento en caché
Para que Dispatcher pueda almacenar en caché una solicitud HTTP, debe cumplir las siguientes reglas:
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:
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:
/content/test |
not cached |
---|---|
/content/test.html |
cached |
No tiene barras diagonales después de la primera extensión de archivo.
Mensajes de registro relacionados:
request URL has trailing slash
Ejemplos:
/content/test.html/ |
not cached |
---|---|
/content/test.html/foo.jpg |
not cached |
/content/test.html |
cached |
Utiliza el método de HEAD o GET HTTP.
Mensajes de registro relacionados:
request method is neither GET nor HEAD
Ejemplos:
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 |
/CACHE = rechaza la solicitud>
/RULES definido en Dispatcher. CUALQUIER CONFIGURACIÓN DE GRANJA.
Mensajes de registro relacionados:
URI not in cache rules: %s request URL not in cache rules
Ejemplos:
a. No almacenado en caché
Farm has /cache => /rules and a request is received for /content/test.html
/cache
{
...
/rules
{
/0001 {
type "deny"
glob "*"
}
}
}
b. Almacenado en caché
Farm has /cache => /rules and a request is received for /content/test.html
/cache
{
...
/rules
{
/0001 {
type "allow"
glob "*"
}
}
}
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:
request contains authorization
Ejemplos:
a. No almacenado en caché
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é
HTTP Request:
GET /content/test.html HTTP/1.1
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
dispatcher.any farm /cache => /allowAuthorized configuration:
/cache {
/allowAuthorized “1”
}
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:
request contains authorization
Ejemplos:
a. No almacenado en caché
HTTP Request:
GET /content/test.html HTTP/1.1
Cookie: login-token=...
dispatcher.any farm /cache = /allowAuthorized configuration:
/cache {
/allowAuthorized “0”
}
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é
HTTP Request:
GET /content/test.html HTTP/1.1
Cookie: login-token=...
dispatcher.any farm /cache => /allowAuthorized configuration:
/cache {
/allowAuthorized “1”
}
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:
request contains a query string
Ejemplos:
a. Almacenado en caché
HTTP Request:
GET /content/test.html?test=1 HTTP/1.1
Farm /cache configuration:
/ignoreUrlParams {
/0001 { /type “allow” /glob “*” }
}
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é
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:
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:
Unable to send request to remote server. Unable to receive response from remote server. Remote server returned: %s No backend available.
Ejemplos:
Solicitud HTTP: 200 OK |
en caché |
---|---|
Solicitud HTTP: 404 Página no encontrada |
no almacenado en caché |
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:
Backend forbids caching: %s, sent: %s" response contains no_cache
Ejemplos:
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é |
El valor de Content-length es mayor que CERO BYTES.
Mensajes de registro relacionados:
response content length is zero
Ejemplos:
Respuesta HTTP: 200 OK Content-Length: 0 |
no almacenado en caché |
---|---|
Respuesta HTTP: 200 OK Content-Length: 3120 |
en caché |