Cloudflare是否支持过时的重新验证?

时间:2018-01-06 04:59:15

标签: caching cloudflare http-caching

Cloudflare记录了Cache-Control标头的指令列表,包括stale-while-revalidate

  
      
  • 陈旧·维持同时重新验证= LT;秒>
      当存在于HTTP响应中时,重新生效的缓存Cache-Control扩展指示缓存可以在它变得陈旧之后服务于它出现的响应,直到自最初检索对象起指示的秒数。
  •   

我将Cache-Control标头设置为public, max-age=0, stale-while-revalidate=30但我似乎永远不会得到缓存命中。 Cloudflare真的支持这个吗?

2 个答案:

答案 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 获得陈旧的缓存副本。总比没有好。