如何正确设置Amazon CloudFront缓存

时间:2014-01-29 22:58:41

标签: caching amazon-s3 amazon-cloudfront

我正在使用S3来存储一堆图像,使用CloudFront来缓存它们。我得到的问题是我的图像没有正确缓存。

如果我通过CloudFront链接检查图像的标题,它将在第一次尝试时显示MISS,并在所有后续尝试中显示HIT。这是正常的,但如果我关闭浏览器,请离开几个小时再试一次它会显示一个MISS。因此表明它只是在短时间内缓存。

以下是cdn上的示例图片:http://d711ds9nsj32q.cloudfront.net/static/8e1f8567e229e24e0782ed_1e994b9dc56ba092ecd2_5.jpg

一个奇怪的行为是,如果你试图用web-sniffer.net嗅探标题,你每次都会看到一个MISS。即使缓存控制是public, max-age=315360000,它也会在10年后过期。

在cloudfront上缓存10年的正确方法是什么?我有什么额外的标题吗?

修改:有关imgur的the same image的比较。他们使用cloudflare,但我看到的行为是正确的。一旦它缓存,我再也没有从我的任何计算机或附近的位置看到错过。我的标题和他们的标题都是相似的,除了一些(不重要的)差异。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

可能是您将最小TTL设置为非默认值并且在该时间段内缓存它而不是Cache-Control标头中的任何内容。我认为这两者都不太可能,因为你可能已经想到了它,因为看起来分布尊重Cache-Control:no-cache(如果最小TTL是非默认的话,那就不会了。)

更有可能的是,cloudfront只会在一段时间后驱逐您的商品:

  

如果不经常请求边缘位置的对象,   CloudFront可能会驱逐对象 - 删除对象之前的对象   到期日 - 为更受欢迎的物品腾出空间。

- 来自this article

至于web-sniffer.net,你会注意到它发送了一个Cache-Control:no-cache标头,它将从原点获取cloudfront。