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 Dispatcher 4.3.3

Utgåva

Dokumentationen innehåller de viktigaste scenarierna som påverkar cachemöjligheterna för begäranden och svar som går igenom modulen AEM Dispatcher. 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 som definieras 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 ingen /timeout har angetts för /renders eller har värdet 0 väntar den 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