GTMetrix没有得到我的S3文件'缓存控制标头

时间:2016-05-04 01:53:24

标签: caching amazon-s3

我正在以下网站上工作:www.ekamat.es

当我运行GTMetrix测试时,它在几个方面显示了糟糕的结果。其中一个是我的一些资源到期。它显示以下消息:(未指定过期)

这些文件上传到Amazon S3,我在一个月(2592000)附近设置了一个Cache-Control。我可以肯定,因为当我在Chrome中打开其中一个资源并使用开发人员控制台进行检查时,它会显示以下信息:

Age:3146
Cache-Control:2592000
Connection:keep-alive
Date:Wed, 04 May 2016 01:46:04 GMT
ETag:"70e17baac2c3e15e2df0064dd2466d4a"
Server:AmazonS3
Via:1.1 7acf1813f9ec06038d676de15fcfc28f.cloudfront.net (CloudFront)
X-Amz-Cf-Id:c4ERes-XPeGiwTOzMEwqyvNZlPtDih-uV77WCI6Jr0OAWnohkHGW6Q==
X-Cache:Hit from cloudfront

另外,在我的.htaccess中,我是这样的:

<IfModule mod_headers.c>
<FilesMatch "\\.(ico|jpeg|jpg|png|gif|swf|css|js)$">
Header set Cache-Control "max-age=604800, public"
Header append Vary: Accept-Encoding
</FilesMatch>
<FilesMatch "\\.(x?html?|php)$">
Header set Cache-Control "max-age=600, private, must-revalidate"
</FilesMatch>
</IfModule>

那么,您如何解释GTMetrix没有显示正确的信息?他们是否使用旧版本的网站,或者我的错误或配置错误?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

这是无效的:

Cache-Control: 2592000

......应该是......

Cache-Control: max-age=2592000

...或...

Cache-Control: public, max-age=2592000

https://tools.ietf.org/html/rfc7234#section-5.2.2

如果该.htaccess文件在S3上,则可以将其删除。 S3没有处理这些。但是,据推测,这是在不同的服务器上,在这种情况下你可以忽略这一段。

在S3中更正对象后,您需要在CloudFront中invalidate *(所有内容)清除无效对象的CloudFront边缘缓存。