Quelles requêtes AEM le cache Dispatcher ?
Cet article détermine pourquoi et quelles requêtes/réponses HTTP ne sont pas mises en cache par Dispatcher AEM.
Description description
Environnement
AEM Dispatcher 4.3.3
Problème
La documentation couvre les scénarios les plus importants qui affectent la capacité de mise en cache des requêtes et réponses qui transitent par le module Dispatcher d’AEM. Toutes les règles de cache ne sont pas traitées.
Résolution resolution
Règles de requête et de mise en cache HTTP
Pour qu’une requête HTTP puisse être mise en cache par le Dispatcher, elle doit respecter les règles suivantes :
-
L’URL est absolue (ne fonctionne pas avec . ou …), a une extension de fichier et le nom de fichier dans l’URL fonctionne comme un fichier sur le système de fichiers.
Messages de journal associés :
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
Exemples :
table 0-row-2 1-row-2 /content/test
not cached
/content/test.html
cached
-
Il ne comporte aucune barre oblique après la première extension de fichier.
Messages de journal associés :
code language-none request URL has trailing slash
Exemples :
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
-
Il utilise la méthode HTTP GET ou HEAD.
Messages de journal associés :
code language-none request method is neither GET nor HEAD
Exemples :
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
-
La demande est refusée par /CACHE =
>
/RULES défini dans le dispatcher. TOUTE CONFIGURATION DE FERME.Messages de journal associés :
code language-none URI not in cache rules: %s request URL not in cache rules
Exemples :
a. Non mis en cache
code language-none Farm has /cache => /rules and a request is received for /content/test.html /cache { ... /rules { /0001 { type "deny" glob "*" } } }
b. Mise en cache
code language-none Farm has /cache => /rules and a request is received for /content/test.html /cache { ... /rules { /0001 { type "allow" glob "*" } } }
-
La requête HTTP ne contient pas d’en-tête d’autorisation ou elle contient l’en-tête , mais /ALLOWAUTHORIZED est défini sur 1 dans la CONFIGURATION DE LA FERME.
Messages de journal associés :
code language-none request contains authorization
Exemples :
a. Non mis en 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. Mise en 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” }
-
La requête HTTP contient un cookie de connexion ou d’autorisation dans l’en-tête du cookie, ou elle contient (ou les deux) de ces cookies et /ALLOWAUTHORIZED est défini sur 1 dans la CONFIGURATION DE LA FERME.
Messages de journal associés :
code language-none request contains authorization
Exemples :
a. Non mis en 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. Mise en 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” }
-
Il existe un paramètre QUERYSTRING dans l’URL et le paramètre peut être ignoré via la CONFIGURATION /IGNOREURLPARAMS DE LA FERME.
Messages de journal associés :
code language-none request contains a query string
Exemples :
a. Mise en 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. Non mis en 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” } }
Règles de réponse et de mise en cache HTTP :
La réponse HTTP renvoyée par l’AEM peut être mise en cache si les critères suivants sont satisfaits :
-
Dispatcher peut envoyer et recevoir une réponse 200 OK de l’un des "RENDERS" définis.
Remarque : Si aucun /timeout n’est défini sur le /renders ou s’il est défini sur 0, il attend toujours une connexion à l’instance AEM même si l’instance est hors service.
Messages de journal associés :
code language-none Unable to send request to remote server. Unable to receive response from remote server. Remote server returned: %s No backend available.
Exemples :
table 0-row-2 1-row-2 Requête HTTP :
200 OKmis en cache Requête HTTP :
404 Page introuvablenon mis en cache -
Aucun de ces en-têtes de réponse n’est présent dans la réponse :
Dispatcher: no-cache
Cache-control: no-cache
Pragma: no-cache
Messages de journal associés :
code language-none Backend forbids caching: %s, sent: %s" response contains no_cache
Exemples :
table 0-row-2 1-row-2 2-row-2 3-row-2 Réponse HTTP :
200 OK
Dispatcher : no-cachenon mis en cache Réponse HTTP :
200 OK
Cache-control : no-cachenon mis en cache Réponse HTTP :
200 OK
Pragma : no-cachenon mis en cache Réponse HTTP :
200 OKmis en cache -
La valeur de longueur du contenu est supérieure à zéro OCTETS.
Messages de journal associés :code language-none response content length is zero
Exemples :
table 0-row-2 1-row-2 Réponse HTTP :
200 OK
Content-Length: 0non mis en cache Réponse HTTP :
200 OK
Content-Length : 3120mis en cache