【问题标题】:How to Remotely force a client to purge a cached website?如何远程强制客户端清除缓存的网站?
【发布时间】:2018-02-22 14:19:45
【问题描述】:

我们遇到了一个问题,即显示我们主页的旧版本。即使从那时起发生了变化,网页将始终显示旧版本。

这个问题源于我们使用了一个 WordPress 插件,该插件添加了一个 Last-Modified: Tue, 19 Apr 2016 15:18:40 GMT 响应的标头。

解决此问题的唯一方法是在浏览器上强制刷新。有没有办法让所有客户端的缓存远程失效?

The Request-Response header

【问题讨论】:

    标签: nginx browser-cache varnish


    【解决方案1】:

    如果您指的是样式表或 javascript,例如,您可以更新样式表的版本,请参见下面的示例

    <link rel="stylesheet" type="text/css" href="mystyle.css">
    

    你可以改成

    <link rel="stylesheet" type="text/css" href="mystyle.css?v=1.0">
    

    请注意源代码末尾的 ?v=1.0 参数,这也适用于 Javascript。

    如果您需要更新图像和内容,可以在此处找到有关缓存破坏的大量信息

    Refresh image with a new one at the same url

    你也可以尝试添加

    <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
    <META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 20 Feb 2012 00:00:01 GMT">
    

    到 HTML 页面的头部。

    【讨论】:

    • 问题不在于缓存破坏 CSS 或 JS 文件。问题是实际的 HTML 页面被缓存了。
    • 你使用的是cloudflare之类的CDN吗?
    • 不,我们在 AWS 实例上使用 varnish。
    • 那么实际的 HTML 页面是否正在被缓存,对吗?由于我真的没有太多事情要做,您可以尝试我添加到原始答案中的内容
    • 即使我添加了上述元标记也没关系,因为客户端不会获得更新的 HTML,他们会看到缓存的 HTML。所以我不认为它会解决我们的问题。
    【解决方案2】:

    浏览器将遵循最初提供给它的缓存设置,您应该能够查看浏览器的开发人员工具以查看缓存的标头是什么。

    例如,如果内容发送如下内容:

    Cache-Control: public, max-age=86400
    

    那么它将没有理由在一天内向您的服务器请求更新版本的内容。

    如果服务器能够处理接收内容请求的负载,你可以确保有ETagLast-Modified头,然后使用较短的过期时间,例如:

    Cache-Control: public, max-age=600
    ETag: abcdefg
    Last-Modified: Tue, 19 Apr 2016 15:18:40 GMT
    

    然后,10 分钟后,浏览器将发出一个请求,询问服务器内容是否已更改。如果不是,服务器应该发出一个空的304 Not Modified 响应以表明没有区别。因此,这可以节省您的带宽,但唯一的成本是“昂贵”的资源,即确定要发送的标头。

    如果您知道这些缓存标头的全部目的是允许浏览器尽快提供它们所拥有的版本,我绝对建议您对主要 HTML(或任何动态内容)使用较小的缓存时间。 em>以及为您节省 CPU 和带宽。

    旁注:如果您能够以这种方式“接触”它,那实际上会有些可怕。

    【讨论】:

      【解决方案3】:

      根据提供的所有信息,您在 Varnish HTTP Purge plugin 上丢失了和/或没有为其配置 VCL。

      如果您看到主页的旧缓存版本,这意味着页面的缓存在 Wordpress 管理中更新其内容后没有被清除。

      在 Wordpress 的典型场景中,您将设置最长缓存寿命,并使用上述插件根据相关的 Wordpress 钩子使缓存无效。

      【讨论】:

        猜你喜欢
        • 2012-01-10
        • 1970-01-01
        • 2016-01-11
        • 2011-11-08
        • 2021-02-10
        • 1970-01-01
        • 2011-07-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多