【问题标题】:Cache-Control Headers not respected on CloudFlareCloudFlare 不尊重缓存控制标头
【发布时间】:2016-04-26 22:30:55
【问题描述】:

我正在尝试缓存一些 html 页面,与通过 CloudFlare 自动缓存图像的方式相同,但我无法让 CloudFlare 实际命中其 html 缓存。

根据文档(参考:https://support.cloudflare.com/hc/en-us/articles/202775670-How-Do-I-Tell-CloudFlare-What-to-Cache-),可以缓存任何将 Cache-Control 设置为 public 且 max-age 大于 0 的内容。

我在我的原始 Nginx 服务器上尝试了各种标头组合,但均未成功。从简单的Cache-Control: public, max-age=31536000 到更复杂的标头,包括s-maxage=31536000、Pragma: public、ETag: "569ff137-6"、Expires: Thu, 31 Dec 2037 23:55:55 GMT,没有任何结果。

有什么想法可以强制 CloudFlare 从缓存中提供 html 页面吗?

PS:我在图像上得到了CF-Cache-Status: HIT,它工作正常,但在 html 页面上什么也没有,甚至没有CF-Cache-Status: something。使用 html 页面的 CloudFlare 页面规则,它似乎可以正常工作,但我想避免使用它,主要是因为它太特定于 CloudFlare。我没有从这些页面提供 cookie 或任何动态内容。

【问题讨论】:

    标签: caching nginx cache-control cloudflare


    【解决方案1】:

    现在可以让 Cloudflare 尊重您的 Web 服务器标头,而不是用浏览器缓存 TTL 设置中描述的最小值覆盖它们。

    首先导航到 Cloudflare 仪表板中的缓存选项卡:

    您可以从这里向下滚动到“Browser Cache Expiration”设置,从这里您可以在下拉菜单中选择“Respect Existing Headers”选项:

    进一步阅读:

    注意:如果未选择此设置,Cloudflare 将对 Cache-Control 标头应用默认的最少 4 小时。设置此设置后,Cloudflare 将不会触及您的 Cache-Control 标头(即使它们很低或根本没有设置)。

    【讨论】:

      【解决方案2】:

      我也偶然发现了这一点。从它说的页面

      专业提示:从您的源发送缓存指令以获取具有我们默认不缓存的扩展名的资源,这完全没有区别。要为我们默认不缓存的扩展指定在您的源的缓存持续时间,您必须创建一个页面规则来“缓存所有内容”。

      因此,您似乎必须设置页面规则才能将其用于 CloudFlare 默认情况下不缓存的文件。本页更详细地描述了这一点,

      https://blog.cloudflare.com/edge-cache-expire-ttl-easiest-way-to-override/

      也就是说它仍然对我不起作用并且似乎不受支持。在联系了他们的支持后,他们证实了这一点。 Respect Origin Header 已从所有计划类型中删除。因此,如果您没有页面规则,他们将尊重原始标题。

      然而,这无助于访问 html 页面的边缘缓存。为此,您已经设置了一个页面规则。一旦完成,我相信你可以将你的最大年龄设置为你的计划允许的最低值。任何更低,它都会被覆盖。也就是说,没有页面规则你可以说 Cache-Control: max-age:30 并且它会通过。使用包含边缘缓存的页面规则,即使页面规则未指定浏览器缓存,您的 max-age 也会受制于您的计划允许的最短时间。

      【讨论】:

      • 我现在有一张公开的票。像尊重所有 URL 上的缓存标头这样简单的事情似乎是不可能的。要么你不包含页面规则,这意味着只有样式表等被缓存,尊重源头,或者你创建一个简单的“缓存一切”页面规则,突然源头被忽略!
      • 没有完全忽略。只是忽略它们比您的计划允许的短。
      【解决方案3】:

      CF 文档非常不清楚。进入“页面规则”,根据通配符定义一个开启缓存的规则——然后它就会起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-10
        • 2020-12-22
        • 1970-01-01
        • 1970-01-01
        • 2020-07-17
        • 1970-01-01
        • 2011-01-13
        • 1970-01-01
        相关资源
        最近更新 更多