Cloudflare记录了Cache-Control
标头的指令列表,包括stale-while-revalidate。
- 陈旧·维持同时重新验证= LT;秒>
当存在于HTTP响应中时,重新生效的缓存Cache-Control扩展指示缓存可以在它变得陈旧之后服务于它出现的响应,直到自最初检索对象起指示的秒数。
我将Cache-Control
标头设置为public, max-age=0, stale-while-revalidate=30
但我似乎永远不会得到缓存命中。 Cloudflare真的支持这个吗?
答案 0 :(得分:1)
如果您放置max-age=0
,那么实际上没有任何缓存,如果是,那么就没有任何东西可以服务。试试max-age=1
- 这应该在30秒内给出一些结果。期。
答案 1 :(得分:0)
今天遇到了这个问题,Cloudflare 文档不是很清楚,但是在他们关于 this page 的示例部分下有一个线索。
<块引用>缓存控制:max-age=600,stale-while-revalidate=30
此配置表明资产在 600 秒内是新鲜的,并且在尝试初始同步重新验证时,可以额外提供 30 秒的陈旧时间以并行请求相同资源。
因此,Cloudflare 确实支持该指令,但是它们的实现与人们的预期略有不同。基本上,一旦缓存内容过期,向您的服务器发出的第一个请求将导致对您的 Origin 的同步请求,该客户端必须等待(大多数人不想要的行为)。
但是,有一些支持,因为对同一资源的任何并行请求(例如,由其他客户端发出)都将获得旧的/缓存的内容(带有 { {1}})。对此进行了测试并能够确认行为。
通过这种方式,如果您的源响应非常慢,或者缓存资源非常受欢迎,则只有一个客户端/用户会被阻止,其余的会从 Cloudflare 获得陈旧的缓存副本。总比没有好。