AEM as a Cloud Serviceで更新された/etc.clientlibs リソースのDispatcher キャッシュを無効にする

この記事では、Dispatcherのキャッシュアクションを設定し、キャッシュバスティング手法を使用することで、/etc.clientlibsの下で更新された静的リソースがAdobe Experience Manager as a Cloud Serviceでデプロイメント後に提供されるようにする方法について説明します。

説明 description

環境

Adobe Experience Manager as a Cloud Service(AEMaaCS)(すべてのバージョン)

症状

  • /etc.clientlibsの下のJavaScript ファイルなどの更新された静的リソースは、デプロイメント後すぐに表示されません。
  • ブラウザー、Dispatcher、またはCDNは、以前のバージョンのファイルを引き続き提供します。

原因

DispatcherおよびCDN キャッシュは、永続キャッシュヘッダーを持つ静的リソースを無効にするかフラッシュしない限り、保持します。 Cloud Managerのデプロイメントでは、キャッシュアクションを設定しない限り、/etc.clientlibsのこれらのキャッシュは自動的にクリアされません。 更新をすぐに反映するには、URL ベースのキャッシュバスティングを使用します。

解決策 resolution

問題を解決するには、次の手順に従います。

  1. Cloud Manager パイプラインでDispatcher キャッシュアクションを設定します。

    1. Cloud Managerで、デプロイメントパイプラインを編集します。

    2. Dispatcher設定セクションに移動し、Configureを選択します。

    3. 次の設定でキャッシュアクションを追加します。

      1. パス: /etc.clientlibs/<your-project>/clientlibs/<your-clientlib>/*
      2. 種類: キャッシュされたコンテンツを古いものとしてマークするには 無効化 を選択し、削除するには フラッシュ を選択します。
    4. 「 パスを追加、適用」を選択し、パイプライン設定を保存します。

    5. パイプラインを実行して、指定したパスを無効化またはフラッシュします。

  2. 静的リソースにURL ベースのキャッシュバスティングを使用します。

    • 静的JavaScriptまたはCSS ファイルを更新する場合は、swiper-bundle-v14.min.jsなどのバージョン付きファイル名を使用します。
    • または、swiper-bundle.min.js?v=20240819などのクエリパラメーターを追加します。
    • URLを変更すると、DispatcherとCDNは、更新されたファイルを新しいリソースとして扱います。
  3. Cache-Control ヘッダーを確認します。

    • max-age=31536000, immutableなどの長期間有効なTTLを使用する場合は、リソース URLのバージョンを設定します。
    • URLをバージョン化しない場合は、短いTTLを使用し、ヘッダーからimmutableを削除します。
  4. プロキシを介したクライアントライブラリの提供:

    • allowProxy=trueを使用して、AEM クライアントライブラリを通じてJavaScriptとCSSにサービスを提供します。
    • /etc.clientlibs/.../resources/*.jsなどの生のURLをハードコーディングすることは避けてください。
  5. 更新を確認します。

    1. パイプラインの実行が完了したら、更新されたリソース URLにアクセスします。
    2. リソースに最新の変更が含まれていることを確認します。
    3. 応答ヘッダーを確認して、期待されるキャッシュ動作を確認します。
recommendation-more-help
experience-cloud-kcs-help-kbarticles