如何设置CloudFront的缓存头,以便Google Pagespeed可以识别它?

8
我正在使用S3和Cloudfront来提供静态内容。然而,Google Pagespeed指出缓存标头未指定,所以我进入了我的cloudfront设置并进行了更改。 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
3个回答

2
根据您提供的HTTP响应头age,看起来该对象已经缓存在641秒内。可能是在对象被缓存后才将Cache-Control标头添加到S3中。建议使其失效,然后再次发出请求。您应该注意到您的X-Cache头将是Miss,这意味着CloudFront访问了您的源。

发布分发后,Google Pagespeed仍无法识别。

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


1

我遇到了同样的问题。你发帖已经有一段时间了,但如果有人有类似的问题...我认为Toy设置的缓存控制是由CloudFront使用的缓存。似乎需要单独为S3对象添加标头(可以通过命令行递归完成)。


0

@michael-douma是正确的,但更具体地说,请参考此处描述:

https://docs.aws.amazon.com/whitepapers/latest/build-static-websites-aws/controlling-how-long-amazon-s3-content-is-cached-by-amazon-cloudfront.html#specify-cache-control-headers

要添加缓存控制头,您应该使用--cache-control max-age=31536000"标志,而这个标志--metadata \"Cache-Control=max-age=31536000\"显然会被翻译成"x-amz-meta-cache-control",这只适用于CloudFront,并不能帮助页面速度洞察。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接