利用浏览器缓存 - 外部图像

时间:2014-02-12 13:58:11

标签: html html5 caching iis-7.5 pagespeed

我已经能够正确地(我认为)在IIS上启用缓存。现在唯一的问题是,当我运行Google的PageSpeed Insights时,仍然会说

  

在静态资源的HTTP标头中设置过期日期或最长期限,指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。

但所有建议都是外部图片。我使用亚马逊的S3来外部托管图像(链接到直接URL,如

  

< img src =“http://s3.amazon.com .......”/>。

有没有办法可以“利用浏览器缓存”来获取这些外部图像?

提前致谢。

安迪

3 个答案:

答案 0 :(得分:2)

是的,使用Amazon S3,您仍然可以设置存储在存储桶中的对象的Expires标头。

存储对象时必须设置此标头,因此有两种方法:

  • 以编程方式使用API​​(使用PUT请求设置Expiry标头)
  • 用于上传对象的存储桶浏览器中的

如果您使用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文件中,希望这有帮助。