問題描述
我最近更新了我的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。