我正在以下网站上工作: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没有显示正确的信息?他们是否使用旧版本的网站,或者我的错误或配置错误?
提前谢谢!
答案 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边缘缓存。