環境

AEMDispatcher 4.2.3

質問

どの HTTP 要求と応答が AEM をキャッシュするのでしょうか?

回答

このドキュメントでは、AEM Dispatcher モジュールを経由した要求や応答におけるキャッシュ機能に影響を与える最も重要なシナリオについて説明します。すべてのキャッシュルールは対象外です。

HTTP 要求&キャッシュルール:

ディスパッチャーによってキャッシュを可能にする HTTP 要求においては、次のルールを厳守する必要があります。

1. URL は絶対であり(「.」または「…」で始まっていません)、ファイル拡張子をもち、URL のファイル名はファイルシステム上でファイルとして機能しています。

関連するログメッセージ:

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

サンプル:

/content/test キャッシュされていません
/content/test.html キャッシュ

2. 最初のファイル拡張子の後にスラッシュがありません。

関連するログメッセージ:

request URL has trailing slash

サンプル:

/content/test.html/ キャッシュされていません
/content/test.html/foo.jpg キャッシュされていません
/content/test.html キャッシュ

3. これは HTTP GET またはメソッドを使用しています。

関連するログメッセージ:

request method is neither GET nor HEAD

サンプル:

HEAD /content/test.html HTTP/1.1 キャッシュ
GET /content/dam/test.jpg HTTP/1.1 キャッシュされていません
POST /content/test.html HTTP/1.1 キャッシュされていません

4. dispatcher .any ファーム構成で定義された /cache => /rules によって要求が拒否されました。

関連するログメッセージ:

URI not in cache rules: %s
request URL not in cache rules

サンプル:

ファームに /cache => /rules があり、/content/test.html に対する要求が受信されました。

/cache

{

  ...

  /rules

  {

    /0001 {

      type "deny"

      glob "*"

  }

}

キャッシュされていません

ファームに /cache => /rules があり、/content/test.html に対する要求が受信されました。

/cache

{

  ...

  /rules

  {

    /0001 {

      type "allow"

      glob "*"

}

}

キャッシュ

5. HTTP 要求が認証ヘッダーを含んでいない、あるいはヘッダーが含まれていますが、/allowAuthorized は、ファームの構成において 1 に設定するためのものです。

関連するログメッセージ:

request contains authorization

サンプル:

HTTP Request:

GET /content/test.html HTTP/1.1
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
/allowAuthorized "0"
}

キャッシュされていません

HTTP Request:

GET /content/test.html HTTP/1.1
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
/allowAuthorized "1"
}

キャッシュ

6. HTTP 要求にログイントークンまたは Cookie ヘッダーにおいて認証 Cookie が含まれている、あるいはその両方が含まれており、ファーム構成において、/allowAuthorized を 1 に設定します。

関連するログメッセージ:

request contains authorization

サンプル:

関連するログメッセージ:

サンプル:

HTTP Request:

GET /content/test.html HTTP/1.1
Cookie: login-token=...

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
/allowAuthorized "0"
}

キャッシュされていません

HTTP Request:

GET /content/test.html HTTP/1.1
Cookie: authorization=YWxhZGRpbjpvcGVuc2VzYW1l

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
/allowAuthorized "0"
}

キャッシュされていません

HTTP Request:

GET /content/test.html HTTP/1.1
Cookie: login-token=...

dispatcher.any farm /cache => /allowAuthorized configuration:

/cache {
/allowAuthorized "1"
}

キャッシュ

7. URL にクエリ文字列パラメーターがあり、ファームの /ignoreUrlParams 設定ではそのパラメーターを無視することが可能です。

関連するログメッセージ:

request contains a query string

サンプル:

HTTP Request:

GET /content/test.html?test=1 HTTP/1.1

ファーム /cache シュ設定:

/ignoreUrlParams {
/0001 { /type "allow" /glob "*" }
}

キャッシュ

HTTP Request:

GET /content/test.html?test=1 HTTP/1.1

ファーム /cache シュ設定:

/ignoreUrlParams {
/0001 { /type "deny" /glob "*" }
/0001 { /type "allow" /glob "test" }
}

キャッシュ

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 応答はキャッシュされます。

1. ディスパッチャーは、定義済みの「レンダリング」の一つから 200 OK 応答を送受信することが可能です。

注意:

/renders に /timeout が設定されていない、あるいは 0 に設定されている場合、たとえインタンスがダウンしていても AEM インタンスの接続に対して永久に待機することになるでしょう。

関連するログメッセージ:

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

サンプル:

HTTP Request:

200 OK

キャッシュ

HTTP Request:

404:ページが見つかりません

キャッシュされていません

2. 応答にこれらの応答ヘッダーが含まれていません:

  • Dispatcher:no-cache
  • キャッシュ制御:no-cache
  • Pragma:no-cache

関連するログメッセージ:

Backend forbids caching: %s, sent: %s"
response contains no_cache

サンプル:

HTTP 応答:

200 OK
Dispatcher:no-cache

キャッシュされていません

HTTP 応答:

200 OK
Cache-control:no-cache

キャッシュされていません

HTTP 応答:

200 OK
PRAGMA:no-cache

キャッシュされていません

HTTP 応答:

200 OK

キャッシュ

3. コンテンツ長の値がゼロバイトを超えています。

関連するログメッセージ:

response content length is zero

サンプル:

HTTP レスポンス

200 OK
Content-Length: 0

キャッシュされていません

HTTP レスポンス

200 OK
Content-Length: 3120

キャッシュ

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー