AEM Dispatcherがキャッシュするリクエストはどれですか?
この記事では、AEM Dispatcherでキャッシュされない HTTP リクエストや応答の理由と対象を特定します。
説明 description
環境
AEM Dispatcher 4.3.3
問題
このドキュメントでは、AEM Dispatcher モジュールを経由するリクエストおよび応答のキャッシュ機能に影響を与える最も重要なシナリオについて説明します。 すべてのキャッシュルールが対象になるわけではありません。
解決策 resolution
HTTP リクエストルールとキャッシュルール
HTTP リクエストを Dispatcher でキャッシュできるようにするには、次のルールに従う必要があります。
-
URL は絶対パスです(と連携していません)。 または…)の場合はファイル拡張子が付き、URL 内のファイル名はファイルシステム上のファイルとして機能します。
関連するログメッセージ :
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
例:
table 0-row-2 1-row-2 /content/test
not cached
/content/test.html
cached
-
最初のファイル拡張子の後にスラッシュはありません。
関連するログメッセージ :
code language-none request URL has trailing slash
例:
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
-
HTTP GETまたはHEAD方式を使用します。
関連するログメッセージ :
code language-none request method is neither GET nor HEAD
例:
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
-
リクエストが、Dispatcher で定義された/CACHE =
>
/RULES によって拒否されます。 任意のファーム設定。関連するログメッセージ :
code language-none URI not in cache rules: %s request URL not in cache rules
例:
a. キャッシュされていない
code language-none Farm has /cache => /rules and a request is received for /content/test.html /cache { ... /rules { /0001 { type "deny" glob "*" } } }
b. キャッシュ
code language-none Farm has /cache => /rules and a request is received for /content/test.html /cache { ... /rules { /0001 { type "allow" glob "*" } } }
-
HTTP リクエストに authorization ヘッダーが含まれていないか、ヘッダーが含まれていますが、ファーム構成で/ALLOWAUTHORIZED が 1 に設定されています。
関連するログメッセージ :
code language-none request contains authorization
例:
a. キャッシュされていない
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. キャッシュ
code language-none HTTP Request: GET /content/test.html HTTP/1.1 Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l dispatcher.any farm /cache => /allowAuthorized configuration: /cache { /allowAuthorized “1” }
-
HTTP リクエストの cookie ヘッダーに login-token または authorization cookie が含まれているか、これらの cookie のいずれか(または両方)が含まれており、ファーム設定で/ALLOWAUTHORIZED が 1 に設定されています。
関連するログメッセージ :
code language-none request contains authorization
例:
a. キャッシュされていない
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. キャッシュ
code language-none HTTP Request: GET /content/test.html HTTP/1.1 Cookie: login-token=... dispatcher.any farm /cache => /allowAuthorized configuration: /cache { /allowAuthorized “1” }
-
URL に QUERYSTRING パラメーターがあり、ファームの/IGNOREURLPARAMS 設定を介してパラメーターを無視できます。
関連するログメッセージ :
code language-none request contains a query string
例:
a. キャッシュ
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. キャッシュされていない
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 応答およびキャッシュルール:
次の条件を満たす場合、AEMから返される HTTP レスポンスはキャッシュ可能です。
-
Dispatcher は、定義された「RENDERS」の 1 つから 200 OK 応答を送受信できます。
メモ: /timeout が/renders に設定されていない場合、または 0 に設定されている場合、インスタンスがダウンしていても、AEM インスタンスへの接続が長時間待機されます。
関連するログメッセージ :
code language-none Unable to send request to remote server. Unable to receive response from remote server. Remote server returned: %s No backend available.
例:
table 0-row-2 1-row-2 HTTP リクエスト:
200 OKキャッシュ HTTP リクエスト:
404 ページが見つかりませんキャッシュなし -
応答には、これらの応答ヘッダーは存在しません。
Dispatcher: no-cache
Cache-control: no-cache
Pragma: no-cache
関連するログメッセージ :
code language-none Backend forbids caching: %s, sent: %s" response contains no_cache
例:
table 0-row-2 1-row-2 2-row-2 3-row-2 HTTP 応答:
200 OK
Dispatcher:キャッシュなしキャッシュなし HTTP 応答:
200 OK
キャッシュコントロール : キャッシュなしキャッシュなし HTTP 応答:
200 OK
プラグマ:キャッシュなしキャッシュなし HTTP 応答:
200 OKキャッシュ -
Content-length の値が ZERO バイトより大きい。
関連するログメッセージ :code language-none response content length is zero
例:
table 0-row-2 1-row-2 HTTP 応答:
200 OK
Content-Length: 0キャッシュなし HTTP 応答:
200 OK
Content-Length: 3120キャッシュ