当文件在云文件上更新时,更新边缘 CDN 需要多长时间?

When a file is updated on cloud-files, how long does it take to update the edge CDNs?

考虑发布到 Rackspace Cloud Files 的文件。如果我在中午更新这个文件,迁移到边缘 CDN 需要多长时间? CDN 是仅根据容器的 TTL 使文件过期,还是 Cloud Files 会在文件更改时通知 CDN?

在开发过程中,用户可以edit/update一组images/files并将更新的文件推送到云文件(具有相同的文件名)。我想在那个时候确保文件被推送到边缘 CDN。我已经阅读了有关清除的内容,但我认为这不是正确的用例。我也阅读了 TTL,我认为将容器设置为低 TTL 是不合适的,因为这些图像不会经常更改。但是当它们确实发生变化时,我希望这种变化能够迅速级联到边缘 CDN。

选项

  1. 配置云文件以立即将更改推送到边缘 CDN。 (这甚至可能吗?)
  2. 当文件更改时,删除旧文件并为更新后的文件使用新名称。 (这似乎是最好的选择,但我也喜欢有可预测的文件名——这需要伪随机或带时间戳的文件名。)

CDN 的工作方式是,当第一次请求文件时,会从源服务器检索资源。资源在响应期间缓存在 CDN 的边缘服务器上,然后再交付给客户端。因此,根据后续请求,资源将通过 CDN 传送。

这意味着如果您有一个从边缘服务器传送的图像,然后在您的原始服务器上对该图像进行更改,则旧图像将继续通过 CDN 传送,直到您执行以下操作之一:

  • 清除缓存,从而允许边缘服务器从源检索图像的新版本
  • 等到最大过期时间用完,以便边缘服务器查找源以获取任何更改
  • 如果您使用的是推送区,请按照您的建议使用文件名版本控制。

一些 CDN 提供商提供使用推送或拉取区域的选项(查看区别 here)。因此,这取决于您使用的是哪种方法。如果您实施推送区域,您可以在其中手动上传所有文件以托管在 CDN 的存储云上,那么文件名版本控制是您的最佳选择。如果您使用的拉区会自动检测您的静态资产并重写 url 以反映 CDN URL,那么在编辑资产后清除资产可能是您的最佳选择。