Vilka förfrågningar AEM Dispatcher cache?

Den här artikeln avgör varför och vilka HTTP-begäranden/svar som inte cachas av AEM Dispatcher.

Beskrivning description

Miljö

AEM 4.3.3

Problem

Dokumentationen innehåller de viktigaste scenarierna som påverkar cachemöjligheterna för begäranden och svar som går igenom AEM Dispatcher-modulen. Alla cacheregler täcks inte.

Upplösning resolution

Regler för HTTP-begäran och -cachelagring

För att en HTTP-begäran ska kunna nås av avsändaren måste den följa följande regler:

  1. URL är absolut (fungerar inte med . eller …) har ett filtillägg och filnamnet i URL:en fungerar som en fil i filsystemet.

    Relaterade loggmeddelanden:

    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
    

    Exempel:

    table 0-row-2 1-row-2
    /content/test not cached
    /content/test.html cached
  2. Det har inga snedstreck efter det första filtillägget.

    Relaterade loggmeddelanden:

    code language-none
    request URL has trailing slash
    

    Exempel:

    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. Den använder HTTP-GET eller HEAD.

    Relaterade loggmeddelanden:

    code language-none
    request method is neither GET nor HEAD
    

    Exempel:

    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. Begäran nekas av /CACHE => /REGLER definierade i dispatchern. ALLA GRUPPKONFIGURATIONER.

    Relaterade loggmeddelanden:

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

    Exempel:

    a. Inte cachelagrad

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

    b. Cachelagrad

    code language-none
    Farm has /cache => /rules and a request is received for /content/test.html
    /cache
    {
      ...
      /rules
      {
        /0001 {
          type "allow"
          glob "*"
          }
      }
    }
    
  5. HTTP-begäran innehåller inte någon auktoriseringshuvud eller så innehåller den rubriken, men /ALLOWAUTHZED är inställd på 1 i FARM CONFIGURATION.

    Relaterade loggmeddelanden:

    code language-none
    request contains authorization
    

    Exempel:

    a. Inte cachelagrad

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

    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. HTTP-begäran innehåller inloggnings-token eller auktoriserings-cookie i cookie-huvudet, eller så innehåller den antingen (eller båda) av dessa cookies och /ALLOWAUTHZED är inställd på 1 i FARM CONFIGURATION.

    Relaterade loggmeddelanden:

    code language-none
    request contains authorization
    

    Exempel:

    a. Inte cachelagrad

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

    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. Det finns en QUERYSTRING-parameter i URL:en och parametern kan ignoreras via FARM:S /IGNOREURLPARAMS CONFIGURATION.

    Relaterade loggmeddelanden:

    code language-none
    request contains a query string
    

    Exempel:

    a. Cachelagrad

    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. Inte cachelagrad

    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-svar och cachningsregler:

HTTP-svaret som returneras från AEM kan nås om följande villkor uppfylls:

  1. Avsändaren kan skicka och ta emot 200 OK-svar från en av de definierade RENDERS-alternativen.

    Obs! Om nej /timeout är inställt på /renders eller är inställt på 0, så väntar det för alltid på en anslutning till AEM även om instansen är nere.

    Relaterade loggmeddelanden:

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

    Exempel:

    table 0-row-2 1-row-2
    HTTP-begäran:

    200 OK
    cache
    HTTP-begäran:

    404 Sidan hittades inte
    inte cachelagrad
  2. Inga av dessa svarshuvuden finns med i svaret:

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

    Relaterade loggmeddelanden:

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

    Exempel:

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

    200 OK

    Dispatcher: ingen cache
    inte cachelagrad
    HTTP-svar:

    200 OK

    Cache-control: no-cache
    inte cachelagrad
    HTTP-svar:

    200 OK

    Pragma: ingen cache
    inte cachelagrad
    HTTP-svar:

    200 OK
    cache
  3. Värdet för innehållslängd är större än ZERO BYTES.
    Relaterade loggmeddelanden:

    code language-none
    response content length is zero
    

    Exempel:

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

    200 OK

    Innehållslängd: 0
    inte cachelagrad
    HTTP-svar:

    200 OK

    Content-Length: 3120
    cache
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f