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 :

  1. 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 extension
    

    Exemples :

    table 0-row-2 1-row-2
    /content/test not cached
    /content/test.html cached
  2. 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 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
  3. Il utilise la méthode HTTP GET ou HEAD.

    Messages de log 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
  4. 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 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. 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 "*"
          }
      }
    }
    
  5. 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 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. 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”
    }
    
  6. 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 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. 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”
    }
    
  7. 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 string
    

    Exemples :

    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 :

  1. 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 OK
    mis en cache
    Requête HTTP :

    page 404 introuvable
    non mis en cache
  2. 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 log 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 : pas de cache
    non mis en cache
    Réponse HTTP :

    200 OK

    Contrôle de cache : pas de cache
    non mis en cache
    Réponse HTTP :

    200 OK

    Pragma : no-cache
    non mis en cache
    Réponse HTTP :

    200 OK
    mis en cache
  3. La valeur de longueur du contenu est supérieure à ZÉRO OCTET. Messages de log 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 : 0
    non mis en cache
    Réponse HTTP :

    200 OK

    Longueur du contenu : 3120
    mis en cache
recommendation-more-help
experience-cloud-kcs-help-kbarticles