2014-02-12 62 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) 

這適用於我。但是如果你想批量編輯它們,我想你必須嘗試命令行。如果您是從命令行執行操作,則根據我的理解,您需要再次複製這些映像以使最大年齡更改能夠在映像上運行。