2013-03-19 71 views
1

我想爲某些Amazon S3文件設置瀏覽器緩存。我打算使用這個元數據:靜態文件應該保存多久?

Cache-Control: max-age=86400, must-revalidate 

這等於一天。

許多我看到像這樣的例子:

Cache-Control: max-age=3600 

爲什麼只有3600,爲什麼不使用必重新驗證?

對於一個我很少改變的文件,它應該被緩存多長時間?

如果我更新文件並需要立即看到更新,但其緩存不會過期5天,會發生什麼情況?

回答

2

爲什麼只有3600?

假設是因爲該特定示例的作者確定一小時是該頁面的適當緩存超時。


爲什麼不使用必重新驗證?

如果響應中不包含嚴格遵循您設置的緩存規則所需的信息,則省略must-revalidate可以在理論上確保通過緩存傳遞更多的請求。見this answer的細節,最相關的部分來自HTTP規範是:

當緩存有一個陳舊的條目,它希望作爲響應 到客戶端的請求中使用,它首先必須檢查與原始服務器 (或者可能是具有新鮮響應的中間緩存)以查看其緩存條目是否仍然可用 。


對於我很少更改的文件,多久它應該被緩存?

許多網絡性能建議表示,將在未來的緩存過期中設置很長的時間,比如幾年。這樣,客戶端瀏覽器將只下載一次數據,隨後的訪問將從緩存中提供。這適用於「真正靜態」的文件,比如Javascript或CSS。另一方面,如果數據是動態的,但不會經常更改,則應根據您的特定方案設置合理的過期時間。您需要在客戶可用時立即向客戶提供最新版本,還是可以提供陳舊的版本?你知道數據何時改變嗎?等等一小時或一天通常在服務器負載,客戶端性能和數據新鮮度之間進行適當的折衷,但它取決於您的要求的


如果我更新的文件,並需要一個更新立即可見,但其高速緩存未過期另外5日內完成?

爲文件指定一個新名稱,或將值附加到查詢字符串中。您當然需要更新所有鏈接。這是靜態資源需要改變時的一般方法。

此外,here is a nice overview的緩存控制屬性可供您使用。

+0

謝謝。如果緩存沒有設置一週,gtmetrix.com將懲罰你。這似乎很長一段時間。 – 4thSpace 2013-03-19 21:20:26