CloudFlare上未遵循Cache-Control标头

Har*_*tor 5 caching nginx cache-control cloudflare

我试图让一些html页面被缓存,就像通过CloudFlare自动缓存图像一样,但是我无法让CloudFlare真正点击它的html缓存.

根据文档(参考:https://support.cloudflare.com/hc/en-us/articles/202775670-How-Do-I-Tell-CloudFlare-What-to-Cache-),可以缓存任何内容用一个缓存控制设置为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或任何动态.

mjs*_*jsa 5

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

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

Cloudflare仪表板缓存选项卡

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

尊重现有标题Cloudflare

进一步阅读:

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