我已经能够正确地(我认为)在IIS上启用缓存。现在唯一的问题是,当我运行Google的PageSpeed Insights时,仍然会说
在静态资源的HTTP标头中设置过期日期或最长期限,指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。
但所有建议都是外部图片。我使用亚马逊的S3来外部托管图像(链接到直接URL,如
< img src =“http://s3.amazon.com .......”/>。
有没有办法可以“利用浏览器缓存”来获取这些外部图像?
提前致谢。
安迪
答案 0 :(得分:2)
是的,使用Amazon S3,您仍然可以设置存储在存储桶中的对象的Expires
标头。
存储对象时必须设置此标头,因此有两种方法:
如果您使用API,则可以执行类似
的操作PUT /ObjectName HTTP/1.1
Host: BucketName.s3.amazonaws.com
Date: date
Authorization: authorization-string
Expires: expiry-date
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html
对于第二种情况,这个链接可能会有所帮助:http://www.newvem.com/how-to-add-caching-headers-to-your-objects-using-amazon-s3/
希望这有帮助。
答案 1 :(得分:1)
对于S3上的单个图像,您可以右键单击存储桶中的图像,转到属性并选择元数据。
add Key: Cache-Control and Value: max-age=604800 (this is for 7 days)
这对我有用。但是如果你想批量编辑它们,我想你必须尝试命令行。如果您从命令行执行操作,根据我的理解,您需要再次复制图像以使最大年龄更改能够处理图像。
答案 2 :(得分:-1)
你试过了吗?
ExpiresActive On
ExpiresDefault A0
<FilesMatch "\.(gif|jpg|jpeg|png|swf)$">
ExpiresDefault A3024000
Header append Cache-Control "public"
</FilesMatch>
在.htaccess文件中,希望这有帮助。