Welche Anfragen speichert AEM Dispatcher im Cache?

Dieser Artikel bestimmt, 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 Anfragen und Antworten auswirken, die das AEM Dispatcher-Modul durchlaufen. Es werden nicht alle Cache-Regeln behandelt.

Auflösung resolution

Regeln für HTTP-Anfragen und Caching

Damit eine HTTP-Anfrage vom Dispatcher zwischengespeichert werden kann, muss sie die folgenden Regeln einhalten:

  1. URL ist absolut (funktioniert nicht mit ). oder …), eine Dateierweiterung aufweist 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. Sie verwendet die 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 keine Autorisierungs-Kopfzeile oder sie enthält die Kopfzeile, 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-Anfrage enthält das Anmelde-Token oder das Autorisierungs-Cookie im Cookie-Header oder sie enthält eines (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, der über die /IGNOREURLPARAMS-KONFIGURATION der FARM ignoriert werden darf.

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

Regeln für HTTP-Antwort und Zwischenspeicherung:

Die von AEM zurückgegebene HTTP-Antwort ist zwischenspeicherbar, wenn die folgenden Kriterien erfüllt sind:

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

    Hinweis: Wenn für /renders kein /Timeout festgelegtoder der Wert auf 0 festgelegt ist, würde sie unaufhörlich auf eine Verbindung zur AEM-Instanz warten, selbst wenn die Instanz ausgefallen ist.

    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-Anfrage:

    200 OK
    Zwischengespeichert
    HTTP-Anfrage:

    404 Seite nicht gefunden
    Nicht zwischengespeichert
  2. Keine dieser Antwort-Header 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: kein Cache
    Nicht zwischengespeichert
    HTTP-Antwort:

    200 OK

    Cache-Steuerung: kein Cache
    Nicht zwischengespeichert
    HTTP-Antwort:

    200 OK

    Pragma: kein Cache
    Nicht zwischengespeichert
    HTTP-Antwort:

    200 OK
    Zwischengespeichert
  3. Der Wert für die Inhaltslänge ist größer als NULL BYTE.
    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

    Inhaltslänge: 3120
    Zwischengespeichert
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f