Quelles requêtes AEM Dispatcher met-il en cache ?
Cet article détermine pourquoi et quelles requêtes/réponses HTTP ne sont pas mises en cache par AEM Dispatcher.
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 des réponses qui passent par le module AEM Dispatcher. Toutes les règles de cache ne sont pas couvertes.
Résolution resolution
Règles de mise en cache et de requête 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 …) comporte une extension de fichier et le nom de fichier dans l’URL fonctionne comme un fichier sur le système de fichiers.
Messages de log 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 extensionExemples :
table 0-row-2 1-row-2 /content/testnot cached/content/test.htmlcached -
Il n’a pas de barre oblique après la première extension de fichier.
Messages de log associés :
code language-none request URL has trailing slashExemples :
table 0-row-2 1-row-2 2-row-2 /content/test.html/not cached/content/test.html/foo.jpgnot cached/content/test.htmlcached -
Il utilise la méthode HTTP GET ou HEAD.
Messages de log associés :
code language-none request method is neither GET nor HEADExemples :
table 0-row-2 1-row-2 2-row-2 HEAD /content/test.html HTTP/1.1cachedGET /content/dam/test.jpg HTTP/1.1not cachedPOST /content/test.html HTTP/1.1not cached -
La requête est refusée par /CACHE =
>/RULES défini dans le Dispatcher. TOUTE CONFIGURATION DE FERME.Messages de log associés :
code language-none URI not in cache rules: %s request URL not in cache rulesExemples :
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. En mémoire 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 contient l’en-tête , mais /ALLOWAUTHORIZED est défini sur 1 dans la CONFIGURATION DE LA BATTERIE.
Messages de log associés :
code language-none request contains authorizationExemples :
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. En mémoire 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 jeton de connexion ou un cookie d’autorisation dans l’en-tête du cookie, ou elle contient l’un de ces cookies (ou les deux) et /ALLOWAUTHORIZED est défini sur 1 dans la CONFIGURATION DE LA BATTERIE.
Messages de log associés :
code language-none request contains authorizationExemples :
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. En mémoire 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 y a un paramètre QUERYSTRING dans l’URL et le paramètre peut être ignoré via la CONFIGURATION /IGNOREURLPARAMS de la FERME.
Messages de log associés :
code language-none request contains a query stringExemples :
a. En mémoire 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éponse HTTP et règles de mise en cache :
La réponse HTTP renvoyée par AEM peut être mise en cache si les critères suivants sont remplis :
-
Le Dispatcher peut envoyer et recevoir une réponse 200 OK de l’un des « RENDUS » définis.
Remarque : si aucun /timeout n’est défini sur le /renders ou s’il est défini sur 0, il attend éternellement une connexion à l’instance AEM même si l’instance est hors service.
Messages de log 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 :
page 404 introuvablenon mis en cache -
Aucun de ces en-têtes de réponse n’est présent dans la réponse :
Dispatcher: no-cacheCache-control: no-cachePragma: no-cache
Messages de log associés :
code language-none Backend forbids caching: %s, sent: %s" response contains no_cacheExemples :
table 0-row-2 1-row-2 2-row-2 3-row-2 Réponse HTTP :
200 OK
Dispatcher : pas de cachenon mis en cache Réponse HTTP :
200 OK
Contrôle de cache : pas de 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 OCTET. Messages de log associés :
code language-none response content length is zeroExemples :
table 0-row-2 1-row-2 Réponse HTTP :
200 OK
Content-Length : 0non mis en cache Réponse HTTP :
200 OK
Longueur du contenu : 3120mis en cache