【问题标题】:May mod_expire conflict with Wordpress updates?mod_expire 可能与 Wordpress 更新冲突吗?
【发布时间】:2013-03-10 22:19:35
【问题描述】:

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

【问题讨论】:

  • 只是好奇:为什么要禁用 ETag? (ETags 可以帮助您解决问题,不是吗?)

标签: wordpress apache .htaccess caching mod-expires


【解决方案1】:

此脚本仅缓存 ico、jpg、png、gif、css、js、gz 文件而不是 html。 Wordpress 就可以了。

如果您遇到客户端 js 崩溃,请不要缓存 js。 或者重新运行一遍,设置 js 缓存一小段时间,比如 14400 秒。

【讨论】:

    【解决方案2】:

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

    这里是 Expires 与 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>
    

    【讨论】:

      猜你喜欢
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多