CDN キャッシュを無効にする方法
- 適用対象:
- Experience Manager as a Cloud Service
- トピック:
- CDN キャッシュ
作成対象:
- 初心者
- 管理者
- 開発者
AEM as a Cloud Serviceの CDN で HTTP 応答のキャッシュを無効にする方法を学びます。応答のキャッシュは、Cache-Control
、Surrogate-Control
、または Expires
HTTP 応答キャッシュヘッダーによって制御されます。
これらのキャッシュヘッダーは、通常、mod_headers
を使用して、AEM Dispatcher のホスト設定で行われますが、AEM パブリッシュ自体で実行されるカスタム Java™ コードで設定することもできます。
新しいデフォルトのキャッシュ動作
AEM as a Cloud Service CDN での HTTP 応答のキャッシュは、接触チャネルからの HTTP 応答ヘッダー Cache-Control
、Surrogate-Control
または Expires
によって制御されます。Cache-Control
に private
、no-cache
または no-store
が含まれる接触チャネル応答はキャッシュされません。
AEM プロジェクトアーキタイプベースの AEM プロジェクトがデプロイされたときの、AEM パブリッシュおよびオーサーでのデフォルトのキャッシュ動作を確認します。
キャッシュを無効にする
キャッシュをオフにすると、AEM as a Cloud Service インスタンスのパフォーマンスに悪影響を与える可能性があるので、デフォルトのキャッシュ動作を無効にする場合は注意が必要です。
ただし、次のようなシナリオで、キャッシュを無効にする場合があります。
- 新しい機能の開発中に、変更をすぐに確認したい場合。
- コンテンツが安全(認証済みユーザーのみを対象)または動的(買い物かご、注文の詳細)で、キャッシュされない場合。
キャッシュを無効にするには、2 つの方法でキャッシュヘッダーを更新します。
- Dispatcher vhost の設定: AEM パブリッシュでのみ使用できます。
- カスタム Java™コード: AEM パブリッシュとオーサーの両方で使用できます。
これらの各オプションを確認してみましょう。
Dispatcher フィルター設定
キャッシュを無効にする場合は、このオプションを使用することをお勧めしますが、AEM パブリッシュでのみ使用できます。キャッシュヘッダーを更新するには、mod_headers
モジュールと、Apache HTTP サーバーの vhost ファイル内の <LocationMatch>
ディレクティブを使用します。一般的な構文は次のとおりです。
<LocationMatch "$URL$ || $URL_REGEX$">
# Removes the response header of this name, if it exists. If there are multiple headers of the same name, all will be removed.
Header unset Cache-Control
Header unset Surrogate-Control
Header unset Expires
# Instructs the Browser and the CDN to not cache the response.
Header always set Cache-Control "private"
# Instructs only the CDN to not cache the response.
Header always set Surrogate-Control "private"
</LocationMatch>
例
トラブルシューティングのために CSS コンテンツタイプ の CDN キャッシュを無効にするには、次の手順に従います。
既存の CSS キャッシュをバイパスするには、CSS ファイルに対して新しいキャッシュキーを生成するために、CSS ファイルでの変更が必要になることに注意してください。
-
AEM プロジェクト内で、
dispatcher/src/conf.d/available_vhosts
ディレクトリから目的の vhost ファイルを見つけます。 -
その vhost(例:
wknd.vhost
)ファイルを次のように更新します。<LocationMatch "^/etc.clientlibs/.*\.(css)$"> # Removes the response header of this name, if it exists. If there are multiple headers of the same name, all will be removed. Header unset Cache-Control Header unset Expires # Instructs the Browser and the CDN to not cache the response. Header always set Cache-Control "private" </LocationMatch>
dispatcher/src/conf.d/enabled_vhosts
ディレクトリ内の vhost ファイルはdispatcher/src/conf.d/available_vhosts
ディレクトリ内のファイルへの シンボリックリンク なので、存在しない場合は、必ずシンボリックリンクを作成してください。 -
Cloud Manager の web 層設定パイプラインまたは RDE コマンドを使用して、目的の AEM as a Cloud Service 環境に vhost の変更をデプロイします。
カスタム Java™ コード
このオプションは、AEM パブリッシュと AEM オーサーの両方で使用できます。キャッシュヘッダーを更新するには、カスタム Java™ コード(Sling サーブレット、Sling サーブレットフィルター)で SlingHttpServletResponse
オブジェクトを使用します。一般的な構文は次のとおりです。
response.setHeader("Cache-Control", "private");