http - 如何为云端设置缓存 header 以便 Google Pagespeed 识别它?

标签 http caching amazon-s3 amazon-cloudfront

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

enter image description here

部署部署后。 Google Pagespeed 仍然无法识别。

我还为 S3 上的对象添加了缓存控制。当我直接从 S3 命中对象时,我可以看到响应 header ,但是当我使用云端 URL 命中时,我看不到缓存控制 header 。

这是我得到的回复

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

最佳答案

根据您提供的 HTTP 响应 header 的年龄,该对象似乎已在缓存中停留了 641 秒。可能是您在缓存对象后将 Cache-Control header 添加到 S3 的情况。我会推荐invalidating对象并再次提出您的请求。您应该注意到您的 X-Cache header 将是一个未命中,这意味着 CloudFront 已到达您的来源。

Once the distribution is deployed. Google Pagespeed still doesn't recognize that.

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

关于http - 如何为云端设置缓存 header 以便 Google Pagespeed 识别它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31525808/

相关文章:

javascript - ExpressJS 到本地服务器没有 'Access-Control-Allow-Origin' header

linux - 将整个站点从 HTTP 迁移到 HTTPS 对 API 用户有何影响?

php - 保护 GET 调用

ios - 用于存储图像并从存储的缓存中检索的缓存不起作用 - iOS Swift

amazon-web-services - Amazon Web Services(AWS)Lambda教程期间调用命令/Json格式错误

amazon-web-services - CloudFormation 模板 -> ALB 目标组不支持 http/TCP 协议(protocol)

ASP.NET:web.config 在哪里/如何缓存?

java - hibernate getResultList() 返回不同的数据

hadoop - EmrActivity 的多个输入

jenkins - 在 Jenkins 管道中使用 s3upload 上传多个文件