2014-02-12 59 views
1

我已经能够正确(我认为)在IIS上启用缓存。现在唯一的问题是,当我运行谷歌的PageSpeed Insights的还在说利用浏览器缓存 - 外部图像

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

但是,所有的建议都是外部图像。我使用Amazon的S3在外部托管图像(链接到直接网址,如

< IMG SRC = “HTTP://s3.amazon.com .......”/>

。 ?

有什么办法,我可以“杠杆浏览器缓存”这些外部图像

在此先感谢

安迪

+0

您应该提供您迄今为止所取得的成果,以便我们提供正确的建议。 –

+0

道歉,如果我看起来不够具体...更多的是,我已经做了它使所有的图像本地缓存完美,但其他地方没有。下面的人指出了我错过了无法控制另一个站点缓存的明显观点,所以我必须在S3内部完成。 –

回答

2

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

你会有这样的有两种方法来设置存储对象时,这个头:

  • 编程方式使用水桶浏览器的API(将到期头与PUT请求)
  • 你使用上传的对象

如果您使用的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/

希望这有助于。

+0

非常感谢。我知道这听起来很愚蠢,但我没有想到我必须将它缓存在S3服务器上。听起来真的很明显! –

-1

你试过:

ExpiresActive On 
ExpiresDefault A0  
<FilesMatch "\.(gif|jpg|jpeg|png|swf)$"> 
    ExpiresDefault A3024000 
    Header append Cache-Control "public" 
    </FilesMatch> 

你的.htaccess文件,希望这会有所帮助。

+1

问题的作者声明他们使用IIS,主要使用Web.config文件进行配置,可能不使用.htaccess文件(除非使用类似Helicon Ape的内容)。 – 2014-02-14 14:47:07

+0

感谢您的回复,但正如汤姆所说,这个项目在微软世界中。 –

1

对于S3上的单张图像,您可以右键单击存储桶中的图像,转到属性并选择元数据。

add Key: Cache-Control and Value: max-age=604800 (this is for 7 days) 

这适用于我。但是如果你想批量编辑它们,我想你必须尝试命令行。如果您是从命令行执行操作,则根据我的理解,您需要再次复制这些映像以使最大年龄更改能够在映像上运行。