Environnement

Répartiteur AEM 4.2.3

Question

Quelles requêtes et réponses HTTP sont mises en cache par le répartiteur AEM ?

Réponse

La documentation couvre les scénarios les plus importants qui affectent la capacité de cache des requêtes et des réponses qui traversent le module AEM Dispatcher. Toutes les règles de cache ne sont pas couvertes.

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.

1. L'URL est absolue (ne commençant pas par . ou ..), a une extension de fichier et le nom de fichier dans l’URL fonctionne comme un fichier du système de fichiers.

Messages de journal associés :

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 :

/content/test non mis en cache
/content/test.html Mis en mémoire cache

2. Il ne comporte aucune barre oblique après la première extension de fichier.

Messages de journal associés :

request URL has trailing slash

Exemples :

/content/test.html/ non mis en cache
/content/test.html/foo.jpg non mis en cache
/content/test.html Mis en mémoire cache

3. Il utilise la méthode HTTP GET ou HEAD.

Messages de journal associés :

request method is neither GET nor HEAD

Exemples :

HEAD /content/test.html HTTP/1.1 Mis en mémoire cache
GET /content/dam/test.jpg HTTP/1.1 non mis en cache
POST /content/test.html HTTP/1.1 non mis en cache

4. La requête est refusée par /cache => /rules défini dans la configuration du répartiteur .any de la configuration de la ferme.

Messages de journal associés :

URI not in cache rules: %s
request URL not in cache rules

Exemples :

La ferme a /cache => /rules et une requête est reçue pour /content/test.html

/cache

{

  ...

  /rules

  {

    /0001 {

      type "deny"

      glob «*»

  }

}

non mis en cache

La ferme a /cache => /rules et une requête est reçue pour /content/test.html

/cache

{

  ...

  /rules

  {

    /0001 {

      type "allow"

glob "*"

  }

}

Mis en mémoire cache

5. 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 :

request contains authorization

Exemples :

Requête HTTP :

GET /content/test.html HTTP/1.1
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
/allowAuthorized "0"
}

non mis en cache

Requête HTTP :

GET /content/test.html HTTP/1.1
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
/allowAuthorized "1"
}

Mis en mémoire cache

6. La requête HTTP contient un cookie de connexion ou un cookie d'autorisation dans l'en-tête du cookie ou contient un (ou les deux) de ces cookies et / allowAuthorized est défini sur 1 dans la configuration de la batterie.

Messages de journal associés :

request contains authorization

Exemples :

Message du journal associé :

Exemples :

Requête HTTP :

GET /content/test.html HTTP/1.1
Cookie: login-token=...

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
/allowAuthorized "0"
}

non mis en cache

Requête HTTP :

GET /content/test.html HTTP/1.1
Cookie: authorization=YWxhZGRpbjpvcGVuc2VzYW1l

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
/allowAuthorized "0"
}

non mis en cache

Requête HTTP :

GET /content/test.html HTTP/1.1
Cookie: login-token=...

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
/allowAuthorized "1"
}

Mis en mémoire cache

7. Il existe un paramètre de requête dans l'url et il peut être ignoré par le biais de la configuration de la ferme/ignoreUrlParams.

Messages de journal associés :

request contains a query string

Exemples :

Requête HTTP :

GET /content/test.html?test=1 HTTP/1.1

Configuration de la ferme du /cache :

/ignoreUrlParams {
/0001 { /type "allow" /glob "*" }
}

Mis en mémoire cache

Requête HTTP :

GET /content/test.html?test=1 HTTP/1.1

Configuration de la ferme du /cache :

/ignoreUrlParams {
/0001 { /type "deny" /glob "*" }
/0001 { /type "allow" /glob "test" }
}

Mis en mémoire cache

Requête HTTP :

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

non mis en cache

Règles de réponse et de mise en cache HTTP :

La réponse HTTP renvoyée par AEM peut être mise en cache si les critères suivants sont respectés.

1. Le dispatcher peut envoyer et recevoir une réponse 200 OK depuis l'un des « rendus » définis.

Remarque :

Si aucun /timeout n'est défini sur le /renders ou défini sur 0 il sera toujours dans l'attente d'une connexion à une instance de AEM même si l'instance est hors-service.

Messages de journal associés :

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

Exemples :

Requête HTTP :

200 OK

Mis en mémoire cache

Requête HTTP :

404 Page non trouvée

non mis en cache

2. Aucun de ces en-têtes de réponse n'est présent dans la réponse :

  • Répartiteur : no-cache
  • Cahe-control : no-cache
  • Pragma : no-cache

Message du journal associé :

Backend forbids caching: %s, sent: %s"
response contains no_cache

Exemples :

Réponse HTTP :

200 OK
Répartiteur : no-cache

non mis en cache

Réponse HTTP :

200 OK
Cache-control : no-cache

non mis en cache

Réponse HTTP :

200 OK
Pragma: no-cache

non mis en cache

Réponse HTTP :

200 OK

Mis en mémoire cache

3. La longueur du contenu est supérieure à zéro octets.

Message du journal associé :

response content length is zero

Exemples :

Réponse HTTP :

200 OK
Content-Length: 0

non mis en cache

Réponse HTTP :

200 OK
Content-Length: 3120

Mis en mémoire cache

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne