问题描述
我最近更新了我的 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。