2011-07-27 48 views
2

我的問題是關係到一個職位,前一段時間討論使圖像無緩存: how to clear or replace a cached imagemod_headers中使用或指定mod_expires

讓我介紹我在做什麼......我 使用JavaScript來創建一個動畫會每5分鐘更新一次。我使用添加時間戳到圖像名稱的技巧,所以我的圖像如下所示:image-1-no-cache.png?d = 131415135135

我使用它來確保更新。如果我不區分名稱,瀏覽器將不會更新任何內容,因爲圖像將存儲在緩存中,並且瀏覽器不會意識到它們已更改。 我的問題是圖像被連續存儲。我通過JavaScript失去了參考,我不知道如何刪除它們。幾個小時後,緩存中充滿了圖像,網站佔用了大量內存。

我現在想要做的是設置到圖像的到期日期。我啓用的模塊和mod_headers中和指定mod_expires我改變了我的.htaccess文件中嘗試不同的事物:

<Files ~ ".*no-cache\.png?=*"> 
    Header set Cache-control "no-cache" 
</Files> 

<FilesMatch ".*no-cache.png.*"> 
    ExpiresActive On  
    ExpiresDefault A300 
</FilesMatch> 

沒有什麼工作。這個想法是使文件-no-cache.png?=。不可緩存。 爲什麼我沒有得到好的結果?我錯過了什麼?

這是第一次嘗試做類似的事情,我很困惑。任何幫助將不勝感激。謝謝 ! Yun

回答

0

?something添加到圖像不會使其不可緩存。它創建了新的 URL可以是可緩存,並且它不會影響其他URL,因此所有其他?versions也保留在緩存中。

<Files ~ "no-cache\.png"> 
    Header set Cache-control "max-age=10, must-revalidate" 
</Files> 

這將告訴Apache頭中的任何地方名添加到所有文件no-cache.png(無需.*)。 AFAIK這匹配文件系統名稱,而不是URL,所以查詢字符串將永遠不會在那裏)。

標題說最高緩存10秒,並在每次使用前檢查服務器的新鮮度。

0

這不行!

使用您的配置,瀏覽器應該在10秒後重新驗證(=更新)圖像,這不會發生。

我認爲最好的選擇是設置「Header set Cache-Control」no-store「」。 如果我擁有JavaScript Image數組中引用的所有圖像,則不需要使用緩存。現在,這是我發現的最佳選擇。

謝謝你, Yun