2

我想使用 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 文件已被用户的浏览器缓存。
在缓存时间到期之前,用户会无法查看我的页面,还是会自动从插件更新中获得新页面?

4

2 回答 2

1

您的担忧成立:浏览器确实会继续使用其缓存(可能已过时)的副本,直到根据您的配置过期。

以下是关于 Expires 与 Last-Modified/ETag的有用总结,包括一些建议的最佳实践。

一般来说,在您的情况下(因为您似乎担心插件更新)我会选择 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>
于 2013-04-15T03:19:43.587 回答
0

此脚本仅缓存 ico、jpg、png、gif、css、js、gz 文件而不是 html。WordPress 会好的。

如果您遇到客户端 js 崩溃,请不要缓存 js。或者再次重新运行,并将 js 设置为短时间缓存,例如 14400 秒。

于 2013-04-15T02:45:26.573 回答