如何为Cloudfront设置缓存标头,以便Google Pagespeed识别它?

时间:2015-07-20 20:31:52

标签: http caching amazon-s3 amazon-cloudfront

我从S3和Cloudfront提供静态内容。但是,Google Pagespeed标记为未指定缓存标头,因此我转到我的云端设置并进行了更改。

enter image description here

部署分发后。 Google Pagespeed仍然没有认识到这一点。

我还在S3上的对象中添加了缓存控制。当我直接从S3点击对象时,我可以看到响应头,但是当我使用cloudfront URL时,我看不到缓存控制头。

这是我得到的回应

Accept-Ranges:bytes
Age:641
Connection:keep-alive
Content-Length:44715
Content-Type:image/png
Date:Fri, 17 Jul 2015 18:39:50 GMT
ETag:"e0b19573b90781f60f8865705c80f11d"
Last-Modified:Fri, 17 Jul 2015 17:50:27 GMT
Server:AmazonS3
Via:1.1 (CloudFront)
X-Amz-Cf-Id:
X-Cache:Hit from cloudfront

2 个答案:

答案 0 :(得分:2)

根据您提供的HTTP响应标头的年龄,看起来该对象已在缓存中保留641秒。可能是在缓存对象后将Cache-Control标头添加到S3的情况。我会建议invalidating该对象并再次提出您的请求。您应该注意到您的X-Cache标题将是 Miss ,这意味着CloudFront会转到您的原点。

  
    

部署分发后。 Google Pagespeed仍然没有认识到这一点。

  

CloudFront不会修改您的Cache-Control标头。这些值仅影响CloudFront缓存对象的时间。

答案 1 :(得分:1)

我遇到了同样的问题。自发布以来已经有一段时间了,但万一有人遇到类似的问题......我认为玩具设置的缓存控制是CloudFront使用的缓存。看来标题需要单独添加到S3对象(可以使用命令行递归完成)。