如何正确设置Amazon CloudFront缓存



我正在使用s3存储一堆图像和云范围来缓存它们。我遇到的问题是我的图像没有正确地缓存。

如果我通过CloudFront链接检查标题是否为图像进行检查,则将在第一次尝试中击中所有后续尝试。这是正常的,但是如果我关闭浏览器,请离开几个小时,然后再试一次,它将显示出一个错过。因此,表明它仅在短时间内被缓存。

这是CDN上的示例图像:http://d711ds9nsj32q.cloudfront.net/static/8e1f8567E229E24E0782ED_1E994B994B9DC56BA092BA092ECD22ECD22ECD22_5.JPG

一个奇怪的行为是,如果您尝试用web-sniffer.net嗅到标题,您将每次都会看到一个错过。即使缓存控制是public, max-age=315360000,并且将在10年后到期。

在CloudFront上缓存10年的合适方法是什么?我缺少任何额外的标题吗?

编辑:要进行比较,这是IMGUR上的相同图像。他们使用Cloudflare,但我看到的行为是正确的。一旦缓存,我再也不会从任何计算机或附近的位置再次看到错过。除了一些(不重要的)差异外,我的标题和它们都相似。任何帮助都将不胜感激。

可能是您将最小的TTL设置为非默认设置,并且在该时间段内缓存它,而不是缓存控制标题中的任何内容。我认为这两者都不太可能是因为您可能已经考虑过它,并且因为它看起来尊重Cache-Control:No-Cache(如果最低ttl是无默认的,则不会)。

更有可能的是,CloudFront只是在一段时间后驱逐您的物品:

如果不经常要求边缘位置中的对象, 云方可能会驱逐对象 - 在其对象之前先驱逐物体 到期日期 - 为更受欢迎的物体腾出空间。

- 本文

至于Web-sniffer.net,您会注意到它发送了一个缓存控制:无缓存标题,它将使CloudFront从Origin获取。

最新更新