繁体   English   中英

CloudFlare上未遵循Cache-Control标头

[英]Cache-Control Headers not respected on CloudFlare

我试图让一些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服务器上尝试了各种标头组合但没有成功。 从简单的Cache-Control: public, max-age=31536000到更复杂的标题,包括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仪表板中的“缓存”选项卡:

Cloudflare仪表板缓存选项卡

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

尊重现有标题Cloudflare

进一步阅读:

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

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

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

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

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

这说它仍然不适合我,似乎没有得到支持。 在联系他们的支持后,他们确认了 Respect Origin Header已从所有计划类型中删除。 因此,如果您没有页面规则,他们将尊重原始标题。

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

CF文档非常不清楚。 进入“页面规则”,并根据通配符定义启用缓存的规则 - 然后它将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM