我正在尝试缓存一些html页面,就像通过CloudFlare自动缓存图像一样,但是我无法让CloudFlare实际命中它的html缓存。

根据文档(引用:https://support.cloudflare.com/hc/en-us/articles/202775670-How-Do-I-Tell-CloudFlare-What-to-Cache-),可以将Cache-Control设置为publicmax-age大于0的任何内容进行高速缓存。

我尝试在源Nginx服务器上使用各种 header 组合,但均未成功。从简单的Cache-Control: public, max-age=31536000到更复杂的 header ,包括s-maxage=31536000Pragma: publicETag: "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或任何动态信息。

最佳答案

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

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

caching - CloudFlare上不遵守缓存控制 header-LMLPHP

从这里您可以向下滚动到“浏览器缓存过期”设置,从这里您可以在下拉列表中选择“尊重现有标题”选项:

caching - CloudFlare上不遵守缓存控制 header-LMLPHP

进一步阅读:

  • Does CloudFlare honor my Expires and Cache-Control headers for static content?
  • Caching Anonymous Page Views
  • How do I cache static HTML?

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

    关于caching - CloudFlare上不遵守缓存控制 header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34910872/

    10-14 14:01