我想使用mod_expire在用户的浏览器中缓存我的Wordpress博客的内容,从而增加我在YSlow和Google Pagespeed的排名。所以我想使用类似下面的配置。
Header unset ETag
FileETag None
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A0
<FilesMatch ".(ico|jpg|png|gif|css|js|gz)$">
ExpiresDefault A2592000
Header append Cache-Control "private"
</FilesMatch>
</IfModule>
但是,现在出现了以下问题。如果插件代码中断并且插件开发人员发布更新怎么办?我将下载并安装到我的博客,但插件中损坏的.js文件由用户的浏览器缓存。
在缓存时间到期之前,用户是否会查看我的页面视图?或者是否会自动从插件的更新中获得新页面的服务?
答案 0 :(得分:1)
您的担忧是成立的:浏览器确实会继续使用缓存(可能过时)的副本,直到它按照您的配置到期为止。
以下是Expires vs. Last-Modified / ETag的a helpful summary,包括一些建议的最佳做法。
一般来说,在你的情况下(因为你似乎关心插件更新)我会选择ETag / Last-Modified而不是Expires。
另一个想法:您不需要将js文件与所有其他类型捆绑在一起。只是一种启发式方法,但它可能有所帮助:
# can be safely cached
<FilesMatch ".(ico|jpg|png|gif|css|gz)$">
ExpiresDefault now plus 30 days
FileETag None
Header unset ETag
</FilesMatch>
# don't cache or only cache briefly
<FilesMatch ".js$">
FileETag MTime Size
# or: ExpiresDefault now plus 6 hours
</FilesMatch>
答案 1 :(得分:0)
这个脚本只是缓存,ico,jpg,png,gif,css,js,gz文件不是html。 Wordpress会很好。
如果您遇到客户端js崩溃,请不要缓存js。 或者再次重新运行它并将js设置为缓存一小段时间,如14400秒。