Welche Anforderungen AEM Dispatcher-Cache?

In diesem Artikel wird festgelegt, warum und welche HTTP-Anfragen/Antworten von der AEM Dispatcher nicht zwischengespeichert werden.

Beschreibung description

Umgebung

AEM Dispatcher 4.3.3

Problem

Die Dokumentation behandelt die wichtigsten Szenarien, die sich auf die Cache-Fähigkeit von Anforderungen und Antworten auswirken, die durch das AEM Dispatcher-Modul ausgeführt werden. Alle Cache-Regeln werden nicht abgedeckt.

Auflösung resolution

HTTP-Anforderungs- und -Caching-Regeln

Damit eine HTTP-Anforderung vom Dispatcher zwischengespeichert werden kann, muss sie den folgenden Regeln entsprechen:

  1. URL ist absolut (funktioniert nicht mit . oder …) eine Dateierweiterung hat und der Dateiname in der URL als Datei im Dateisystem funktioniert.

    Verwandte Protokollmeldungen:

    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
    

    Beispiele:

    table 0-row-2 1-row-2
    /content/test not cached
    /content/test.html cached
  2. Nach der ersten Dateierweiterung gibt es keine Schrägstriche.

    Verwandte Protokollmeldungen:

    code language-none
    request URL has trailing slash
    

    Beispiele:

    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. Es verwendet HTTP-GET- oder HEAD-Methode.

    Verwandte Protokollmeldungen:

    code language-none
    request method is neither GET nor HEAD
    

    Beispiele:

    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. Die Anfrage wird von /CACHE => /RULES verweigert, das im Dispatcher definiert ist. JEDE FARM-KONFIGURATION.

    Verwandte Protokollmeldungen:

    code language-none
    URI not  in cache rules: %s request URL not in cache rules
    

    Beispiele:

    a. Nicht zwischengespeichert

    code language-none
    Farm has /cache => /rules and a request is received for /content/test.html
    /cache
    {
      ...
      /rules
      {
        /0001 {
          type "deny"
          glob "*"
          }
      }
    }
    

    b. Zwischengespeichert

    code language-none
    Farm has /cache => /rules and a request is received for /content/test.html
    /cache
    {
      ...
      /rules
      {
        /0001 {
          type "allow"
          glob "*"
          }
      }
    }
    
  5. Die HTTP-Anfrage enthält keinen Autorisierungs-Header oder enthält den Header, aber /ALLOWAUTHORIZED ist in der FARM-KONFIGURATION auf 1 gesetzt.

    Verwandte Protokollmeldungen:

    code language-none
    request contains authorization
    

    Beispiele:

    a. Nicht zwischengespeichert

    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. Zwischengespeichert

    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. Die HTTP-Anforderung enthält ein Anmelde-Token- oder Autorisierungs-Cookie im Cookie-Header oder enthält entweder (oder beide) dieser Cookies und /ALLOWAUTHORIZED ist in der FARM-KONFIGURATION auf 1 gesetzt.

    Verwandte Protokollmeldungen:

    code language-none
    request contains authorization
    

    Beispiele:

    a. Nicht zwischengespeichert

    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. Zwischengespeichert

    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. Die URL enthält einen QUERYSTRING -Parameter und der Parameter darf über die KONFIGURATION /IGNOREURLPARAMS DER FARM ignoriert werden.

    Verwandte Protokollmeldungen:

    code language-none
    request contains a query string
    

    Beispiele:

    a. Zwischengespeichert

    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. Nicht zwischengespeichert

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

HTTP-Antwort- und Caching-Regeln:

Die von AEM zurückgegebene HTTP-Antwort kann zwischengespeichert werden, wenn die folgenden Kriterien erfüllt sind:

  1. Der Dispatcher kann eine 200 OK-Antwort von einem der definierten "RENDERS"senden und empfangen.

    Hinweis: Wenn für die /renders kein /timeout festgelegt oder auf 0 festgelegt ist, würde es ewig auf eine Verbindung zur AEM warten, selbst wenn die Instanz ausfällt.

    Verwandte Protokollmeldungen:

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

    Beispiele:

    table 0-row-2 1-row-2
    HTTP-Anforderung:

    200 OK
    zwischengespeichert
    HTTP-Anforderung:

    404 Seite nicht gefunden
    nicht zwischengespeichert
  2. Keine dieser Antwortheader ist in der Antwort vorhanden:

    • Dispatcher: no-cache
    • Cache-control: no-cache
    • Pragma: no-cache

    Verwandte Protokollmeldungen:

    code language-none
    Backend forbids caching: %s, sent: %s" response contains no_cache
    

    Beispiele:

    table 0-row-2 1-row-2 2-row-2 3-row-2
    HTTP-Antwort:

    200 OK

    Dispatcher: no-cache
    nicht zwischengespeichert
    HTTP-Antwort:

    200 OK

    Cache-Control: no-cache
    nicht zwischengespeichert
    HTTP-Antwort:

    200 OK

    Pragma: no-cache
    nicht zwischengespeichert
    HTTP-Antwort:

    200 OK
    zwischengespeichert
  3. Der Wert der Inhaltslänge ist größer als NULL-BYTES.
    Verwandte Protokollmeldungen:

    code language-none
    response content length is zero
    

    Beispiele:

    table 0-row-2 1-row-2
    HTTP-Antwort:

    200 OK

    Content-Length: 0
    nicht zwischengespeichert
    HTTP-Antwort:

    200 OK

    Inhaltsdauer: 3120
    zwischengespeichert
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f