使AEM as a Cloud Service中更新的/etc.clientlibs資源的Dispatcher快取失效

本文說明如何透過設定Dispatcher快取動作並使用防快取技術,確保在Adobe Experience Manager as a Cloud Service中部署後提供/etc.clientlibs下更新的靜態資源。

說明 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設定區段,然後選取設定。

    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標頭:

    • 如果您使用長期TTL (例如max-age=31536000, immutable),請修改資源URL。
    • 如果您沒有版本URL,請使用較短的TTL並從標頭移除immutable。
  4. 透過Proxy服務使用者端程式庫:

    • 透過allowProxy=true的AEM使用者端資料庫提供JavaScript和CSS。
    • 避免硬式編碼原始URL,例如/etc.clientlibs/.../resources/*.js。
  5. 驗證更新:

    1. 管道執行完成後,存取更新的資源URL。
    2. 確認資源包含最新變更。
    3. 檢閱回應標頭,以驗證預期的快取行為。
recommendation-more-help
experience-cloud-kcs-help-kbarticles