問題描述
我最近更新了我的 WordPress 安裝的 style.css 檔案。更改是有效的:當以管理員身份登入時 (我的部落格設定為使管理員從不服務於該網站的快取版本,而是一個 「live」),我可以看到它們。
但是我的部落格透過 CDN(使用 W3 Total Cache) 進行服務。透過 CDN,更改無效:CDN 不會從我的主題提供修改的檔案。即使我已經修改後上傳 (Dashboard> Performance> CDN> 上傳主題檔案。
我的 CDN 在 AmazonCloud Front 上執行。並且在 W3 Total Cache 中停用 Minify 。
透過我的 CDN 提供的主題檔案是壓縮版本:style.css.gzip
我應該從我的 CDN 「purge」 物件或稍等一點 (已經超過一個星期) 。是的,我清空我正在使用的瀏覽器的快取,看到更改正在生效。還是有什麼我失蹤的?
謝謝,
P.
最佳解決方案
你也需要
-
版本您的檔案 (透過呼叫它
style.css?ver=xxx.xxx),並確保您的 CloudFront 分發具有 「轉發查詢字串」 開啟。這是更好的選擇,因為這意味著您需要做的是增加查詢字串中的數字,CloudFront 將自動獲取該檔案。 -
透過 AWS 控制檯手動使您的檔案無效 (編輯分發版時有無效標籤)
要開啟 「轉發查詢字串」,請執行以下操作:
-
點選’i’ 左側的核取方塊,編輯您的 Cloudfront 發行版,然後單擊工具欄中的”distribution settings” 按鈕
-
轉到 「行為」 選項卡
-
選擇行,然後單擊’Edit’
-
將 「轉發查詢字串」 更改為是
-
點選 「是,編輯」
次佳解決方案
有一個很簡單的”trick”,以防止快取,當檔案內容改變時:新增版本號,設定為您更改檔案的最新日期/時間。
add_action( 'wp_enqueue_scripts', 'wpse61738_non_cached_stylesheet' );
function wpse61738_non_cached_stylesheet()
{
wp_enqueue_style(
'style-main',
get_stylesheet_directory_uri().'/style.css',
array(),
filemtime( get_stylesheet_directory().'/style.css' )
);
}
這將附加?ver=0123456789 到您的標題中的 style.css 參考連結。只有當檔案內容被修改時,版本號才會更改。所以你有一個解決方案,工作完美與 a) 伺服器端快取 b) 瀏覽器快取和重新整理自動。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。