回答
通常建議一年爲標準最大值。見RFC 2616:
爲了紀念一個響應爲「永不過期」,源服務器發送一個 到期日期的大約一年,從迴應是 發送的時間。 HTTP/1.1服務器不應該在將來發送超過一個 年的過期日期。
雖然適用於舊expires
標準,是有意義的申請cache-control
太在沒有任何明確的標準指導。無論如何,只要您通常需要,隨意選擇任意長度的值可能會破壞某些用戶代理。所以:
Cache-Control: max-age=31536000
哪些元數據報頭考慮的不是將其存儲爲「只要有可能,」而是沉澱,只要是合理的。例如,你不太可能需要將它緩存超過10年的時間......我是對的嗎?
的RFC這裏討論的max-age:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3
埃裏克·勞倫斯說,之前IE9,IE瀏覽器會當作過時的任何資源具有的Cache-Control:max-age的值超過2147483648(2^31)秒,大約68年(http://blogs.msdn.com/b/ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx)。
其他用戶代理當然會有所不同,所以...嘗試選擇一個不太可能(而不是可能!)的數字來引起溢出。最大年齡大於31536000(一年)沒有意義,非正式地說這被認爲是合理的最大值。
誰創造最大1年緩存的建議,沒想到它通過適當的人。
首先,如果訪問者正在服務過期的緩存文件,那麼爲什麼它會提供任何好處讓它在1年後突然加載新版本?如果一個文件有1年的TTL,從功能的角度來看,這顯然意味着文件根本不打算被改變。
那麼爲什麼會需要超過1年?
1)爲什麼不呢?它沒有任何目的告訴訪問者瀏覽器「嘿,這個文件是1歲,這可能是一個想法,檢查它是否已被更新」。
2)CDN服務。大多數內容交付網絡使用緩存頭來決定從邊緣服務器有效提供文件的時間。如果您對這些文件擁有1年的緩存控制權,它將在某個時刻開始重新向源服務器請求未更改的文件,並且邊緣緩存需要完全重新填充,導致客戶端的負載更慢,並且不必要呼叫原點。
最長1年的要點是什麼?哪些瀏覽器在設置的金額高於31536000時會窒息?
1年是互聯網時代的永恆。另外,如果你需要緩存認真你會處理(除高速緩存控制)的最後一次修改和/或ETAG機制。因此即使是一年後的重新請求也不會損害帶寬(304未修改) – redben
1年不是永恆的,當你的圖像永遠不會改變(像互聯網上的大多數圖像),並且當你不想要一個CDN從原點刷新文件(這是毫無意義的)。至於最後修改的/ etag,當然這會啓動客戶端和服務器之間的請求和對話,只是爲了找出我們已經知道的「yup,它仍然可以提供緩存的文件」。你的論點基本上是「1年是互聯網上的永恆」,它不會提供任何有用的東西。我已經在圖像上設置了10年到期,這只是一個更好的最終結果。 – suncat100
哦,還有默認的瀏覽器緩存大小。任何緩存的資產是否會在瀏覽器緩存中存活一年?我不知道。 – redben
- 1. 緩存控制http頭
- 2. HTTP緩存控制,我怎麼緩存控制:最大年齡= 0頭從服務器返回的?
- 3. HTTP緩存:緩存控制
- 4. ASP.NET MVC:OutputCache和http頭 - 緩存控制
- 5. 在WCF服務中設置HTTP緩存控制標頭
- 6. HTTP緩存控制
- 7. 緩存控制頭
- 8. 設置ASP.NET緩存控制標頭
- 9. Cloudfront緩存控制標頭丟失
- 10. HTTP緩存頭
- 11. 如何發送緩存控制:HTTP響應頭中的no-cache?
- 12. 緩存控制:最大年齡設置
- 13. 使Nginx緩存尊重緩存控制標頭
- 14. 在PHP中使用HTTP頭進行緩存控制
- 15. HTTP頭:控制緩存和歷史機制
- 16. ImageResizer返回專用緩存控制標頭值
- 17. 緩存控制最大年齡元標記不註冊
- 18. GAE的appspot.com緩存控制頭 - HTTP狀態304
- 19. HTTP請求標頭和緩存
- 20. 訪問控制最大年齡與緩存控制
- 21. 的Rails 3.2機架::緩存HTTP標頭和動作緩存
- 22. Firefox Live HTTP標頭,緩存控制後的曲線花括號:no-cache
- 23. CloudFront的圖像緩存控制頭
- 24. HTTP 404未找到響應與Set-Cookie指令包含緩存控制標頭
- 25. 緩存控制響應頭不強制瀏覽器緩存
- 26. expire標題和緩存控制與mod標頭
- 27. 緩存控制HTML標題
- 28. 如何從PHP中的cUrl獲取緩存控制最大年齡值?
- 29. 替代HTTP的當量=「編譯」和http-當量=「緩存控制」元標記中
- 30. HTTP緩存和ETag頭
可能max-age的值是依賴於瀏覽器/版本,並在任何方式代理... AFAIK沒有真正的標準/規範,這樣任何值將是一個猜測... – Yahia