Cloudflare不尊重边缓存TTL值

时间:2018-01-28 17:29:31

标签: http cloudflare

方案

我有一个域static.example.com。该域下的所有资源都是一次写入,多次读取。我希望Cloudflare尽可能积极地缓存其资源;如果资源在服务器上发生变化,客户端应该能够获取更新版本的唯一方法是,如果我手动进入Cloudflare并清除该资源的缓存。

现在,我明白这是不可能的。我可以做的第二件事就是在服务器上实现这一点(使用客户端缓存,例如使用Cache-Control标头)将边缘缓存TTL设置为尽可能高。

问题

我在Cloudflare中配置了一个页面规则,如下所示:

*static.example.com/*
Cache Level: Cache Everything, Edge Cache TTL: a month

然而,Cloudflare似乎并不尊重一个月的边缘缓存TTL。

复制步骤

实际行为

  1. GET https://static.example.com/img.png。响应标头cf-cache-status: MISS。加载速度很慢,因为它会转到我的原始服务器。
  2. 来自同一IP的
  3. GET https://static.example.com/img.png。响应标头cf-cache-status: HIT。负载很快,因为它由Cloudflare缓存。
  4. 等一天,在此期间我不会向static.example.com提出任何其他请求。
  5. 来自同一IP的
  6. GET https://static.example.com/img.png响应标头cf-cache-status: MISS。负载很慢! (为什么不尊重一个月的边缘缓存TTL?资源不应该从Cloudflare缓存中清除!)
  7. 预期行为

    1. GET https://static.example.com/img.png。响应标头cf-cache-status: MISS。加载速度很慢,因为它会转到我的原始服务器。
    2. 来自同一IP的
    3. GET https://static.example.com/img.png。响应标头cf-cache-status: HIT。负载很快,因为它由Cloudflare缓存。
    4. 等一天,在此期间我不会向static.example.com提出任何其他请求。
    5. 来自同一IP的
    6. GET https://static.example.com/img.png响应标头cf-cache-status: HIT。负载很快。
    7. 问题

      为什么我设置的边缘缓存TTL值不受Cloudflare代理服务器的尊重?

1 个答案:

答案 0 :(得分:0)

它只是一个缓存。到期只是建议何时明确到期,但与所有缓存一样 - 您不能信任任何缓存 - 或者在整个期间缓存。该项最有可能从其最近使用的逻辑缓存中过期,任何流行的内容都会将您的图像从缓存中推出。如果您想要保证CDN上的元素,您不应该像Cloudflare那样使用基于代理的CDN。