![](/img/trans.png)
[英]Caching Videos Returning 206 on AEM Dispatcher running on Apache server
[英]What are the best way of handling AEM caching in dispatcher?
我最近遇到了需要手動清除調度程序緩存的情況。 例如,如果我正在修改任何 Js/css 文件,我將需要手動清除調度程序緩存以獲取那些修改后的新 Js/css,否則它將為舊版本的代碼提供服務。 我剛剛聽說 ACS 開發了版本 clientlib,它將幫助我們進行版本控制。 我對此有很多疑問。
在clientlib版本之前,AEM是如何管理的? AEM 沒有智能管理版本化的客戶端庫嗎? 處理方式是否正確? 我們可以創建一個腳本,同時在清除那些 JS/css 文件之前備份現有文件嗎? 我們還有哪些其他選擇?
版本化的 clientlib 是正確的解決方案。 但你需要更多:
回答您的疑問:
受到推崇的:
由於 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.