尽管 Cache-Control Cloudfront 没有缓存

Cloudfront not caching despite Cache-Control

我有一个 Cloudfront 分布,它指向一个调整 S3 存储桶中图像大小的服务器。服务器 returns 一个 Cache-Control header 和 public, max-age=31104000,但我不断得到 miss from Cloudfront 因此图像不会缓存在 Cloudfront 中。

为了测试,我设置了另一个直接指向 S3 存储桶的 Cloudfront 分布,它确实缓存了 hit from Cloudfront 的图像。

我比较了请求和响应 headers,唯一的区别是 miss 有一个 Last-Modified header 响应,这是 good 请求中缺少的。但是,我不确定这是问题所在。

你知道发生了什么事吗?这是 headers:

Good Response:
Age:10
Cache-Control:public, max-age=31104000
Connection:keep-alive
Date:Sat, 05 Sep 2015 16:15:51 GMT
ETag:"51dbe11a5fa320c4495221b69df1d860"
Server:AmazonS3
Via:1.1 b7bc8b4c398aa9f5a08980055c497334.cloudfront.net (CloudFront)
X-Amz-Cf-Id:4KE-cAoFrTmcjkRW3goZAImvyQE5i1Vl4KZyrWL8HyCk6GcJZ9N7Kw==
X-Cache:Hit from cloudfront

Bad Response:
Cache-Control:public, max-age=31104000
Connection:keep-alive
Date:Sat, 05 Sep 2015 16:16:42 GMT
ETag:"51dbe11a5fa320c4495221b69df1d860"
Last-Modified:Sat, 05 Sep 2015 16:07:41 GMT
Server:nginx/1.6.2
Via:1.1 45578d14a69df96accaab0d1aba82a5a.cloudfront.net (CloudFront)
X-Amz-Cf-Id:FGMRwDI0vOJQ7aPj83s-RGTO0fg_Zesu7FLo7Ia5vwCxcTZI97ri5A==
X-Cache:Miss from cloudfront

Good Request:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0    .8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,da;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Host:assets.runemadsen.com
If-Modified-Since:Sat, 05 Sep 2015 16:07:41 GMT
If-None-Match:"51dbe11a5fa320c4495221b69df1d860"
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (    KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36

Bad Request:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0    .8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,da;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Host:images.runemadsen.com
If-Modified-Since:Sat, 05 Sep 2015 16:07:41 GMT
If-None-Match:"51dbe11a5fa320c4495221b69df1d860"
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (    KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36

感谢任何帮助。

感谢您的评论。这是最后的更新:原因是没有 Cache-Control 的旧响应被缓存在 Cloudfront 中,这不知何故使 cloudfront 不断从源重新加载图像。我不确定缓存的响应是如何触发常量 "miss" 的,但这就是发生的事情。我使路由无效,Cloudfront 开始缓存图像。