簡體   English   中英

在調度程序中處理 AEM 緩存的最佳方法是什么?

[英]What are the best way of handling AEM caching in dispatcher?

我最近遇到了需要手動清除調度程序緩存的情況。 例如,如果我正在修改任何 Js/css 文件,我將需要手動清除調度程序緩存以獲取那些修改后的新 Js/css,否則它將為舊版本的代碼提供服務。 我剛剛聽說 ACS 開發了版本 clientlib,它將幫助我們進行版本控制。 我對此有很多疑問。

在clientlib版本之前,AEM是如何管理的? AEM 沒有智能管理版本化的客戶端庫嗎? 處理方式是否正確? 我們可以創建一個腳本,同時在清除那些 JS/css 文件之前備份現有文件嗎? 我們還有哪些其他選擇?

版本化的 clientlib 是正確的解決方案。 但你需要更多:

  • Versioned Clientlibs是一種客戶端緩存破壞技術。 用於破壞瀏覽器緩存。
  • 它不會破壞調度程序緩存。 除非手動清除,否則緩存在調度程序中的頁面將繼續提供服務。
  • 有關類似問題,請參閱此處

回答您的疑問:

  • 在clientlib版本之前,AEM是如何管理的? 正如@Subhash 指出的那樣,它是生產部署腳本(Bamboo 或 Jenkins)的一部分,用於在客戶端庫更改時清除調度程序緩存。
  • AEM 沒有智能管理版本化的客戶端庫嗎? - 這與任何 cms 工具相同。 緩存策略必須由 http 服務器而不是 AEM 負責。 此外,當您部署 js 代碼更改時,您需要清除調度程序緩存以使頁面反映新的 js 更改。
  • 處理方式是否正確? 對於客戶端破壞 - 版本化的 clientlib 是 100% 萬無一失的技術。 對於調度程序緩存破壞,您需要不同的方法。
  • 我們可以創建一個腳本,同時在清除那些 JS/css 文件之前備份現有文件嗎? 應該是 Jenkins/Bamboo 作業中定義的 CI 流程的一部分。 不是 AEM 的責任。
  • 我們還有哪些其他選擇? - 對於調度緩存清除,嘗試dispatcher-flush-rules 您可以配置當 /etc 設計路徑發布時,它們應該自動清除整個樹,以便后續請求將命中發布者並獲得更新的客戶端庫。

受到推崇的:

  • 使用 Versioned Clientlibs + CI 驅動的調度程序緩存清除。

由於 clientlib 由 IT 團隊修改並需要部署,因此將其作為 CI 過程的一部分來清除緩存。 調度程序刷新規則可能會有所幫助。 但這不是某人在生產中修改 js/css 並點擊發布按鈕的用例。 生產部署周期應執行此任務。 調度器緩存清除腳本的參考鏈接: 1. Adobe 文檔, 2. Jenkins 方式, 3. Bamboo 方式

在版本化 clientlibs 之前 - 您通常將調度程序失效作為構建和部署管道的一部分。 在將包部署到作者和發布實例后的最后一個階段,調度程序失效。 這仍然會導致瀏覽器緩存未清除的問題(在 clientlib 名稱未更改的情況下。)

為了克服這個問題,您可以構建自定義緩存破壞技術,在其中維護為每個版本命名/etc/designs/homepageclientlib.v1.js的方案 - 例如: /etc/designs/homepageclientlib.v1.js/etc/designs/homepageclientlib.<<timestamp>>.js . 這只是為了讓瀏覽器觸發從服務器重新下載文件。 但是現在有了 CI/CD 和頻繁發布,這只是一個開銷。 也有使用查詢參數強制繞過調度程序的非優雅方法。 事實上,即使現在打開任何 AEM 頁面,您也可能會注意到用於禁用緩存的cq_ck查詢參數。

來自 acs commons 的版本化 clientlibs 現在是要走的路。 麻煩的是,配置為 clientlibs 生成唯一的 md5hash,從而不僅強制繞過調度程序緩存,還強制繞過瀏覽器級緩存。

Adobe AEM 有一個附加組件,可以進行資源指紋識別(不限於 clientlib,基本上適用於所有靜態網站內容)、Cache-Control 標頭管理和真正的 AEM 調度程序緩存的純資源刷新。 它還從調度程序緩存中刪除 AEM 創作過程未涵蓋的更新資源(例如,當您部署最新代碼時)。 免費試用版可從https://www.browsercachebooster.com/ 獲得

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM