使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
請依照下列步驟解決問題:
-
在Cloud Manager管道中設定Dispatcher快取動作:
-
在Cloud Manager中,編輯您的部署管道。
-
移至Dispatcher設定區段,然後選取設定。
-
使用下列設定新增快取動作:
- 路徑:
/etc.clientlibs/<your-project>/clientlibs/<your-clientlib>/* - 型別:選取 失效 以將快取的內容標示為過時,或選取 排清 以刪除快取的內容。
- 路徑:
-
選取「新增路徑」、「套用」,然後儲存管道設定。
-
執行管道以失效或清除指定的路徑。
-
-
對靜態資源使用URL型快取破產:
- 當您更新靜態JavaScript或CSS檔案時,請使用版本化的檔案名稱,例如
swiper-bundle-v14.min.js。 - 或者,附加查詢引數,例如
swiper-bundle.min.js?v=20240819。 - 變更URL可確保Dispatcher和CDN將更新後的檔案視為新資源。
- 當您更新靜態JavaScript或CSS檔案時,請使用版本化的檔案名稱,例如
-
檢閱
Cache-Control標頭:- 如果您使用長期TTL (例如
max-age=31536000, immutable),請修改資源URL。 - 如果您沒有版本URL,請使用較短的TTL並從標頭移除
immutable。
- 如果您使用長期TTL (例如
-
透過Proxy服務使用者端程式庫:
- 透過
allowProxy=true的AEM使用者端資料庫提供JavaScript和CSS。 - 避免硬式編碼原始URL,例如
/etc.clientlibs/.../resources/*.js。
- 透過
-
驗證更新:
- 管道執行完成後,存取更新的資源URL。
- 確認資源包含最新變更。
- 檢閱回應標頭,以驗證預期的快取行為。
recommendation-more-help
experience-cloud-kcs-help-kbarticles