Expires
和Cache-Control
標題有什麼區別?Expires和Cache-Control頭文件有什麼區別?
回答
Cache-Control
在HTTP/1.1中引入,並提供比Expires
更多的選項。它們可以用來完成相同的事情,但Expires
的數據值是HTTP日期,而Cache-Control
max-age可讓您指定相對時間量,以便您可以指定「請求頁面後X小時」。
HTML Cache control是一個非常相似的問題,並有一個很好的鏈接到緩存教程,應該回答你的大部分問題(例如,http://www.mnot.net/cache_docs/#EXPIRES)。總而言之,當你需要更多的控制緩存的方式時,推薦使用Expires
作爲靜態資源,比如圖像和Cache-Control
。
如果您使用的是CDN(雲傳輸網絡),我建議您使用具有最大使用時間(以秒爲單位)的緩存控制。例如Cache-Control:max-age = 604800。 這樣可以防止您的原始服務器發出請求峯值:使用「Expires Wed,20xx 20xx 04:37:07 GMT」時,所有瀏覽器都會同時請求您。
Apache(也可能是許多服務器)通常使用請求文件的時間來設置到期日期+您指定的超時。由於這個日期是使用秒,所以你的場景是不太可能的,並且行爲與'''cache-control'''相同。所以我不明白爲什麼在使用'Expires:'''時會出現請求峯值 – hilnius 2015-05-27 12:20:23
Heroku devcenter在這個問題上有一個excellent article。
從它引用,
雖然Cache-Control頭開啓客戶端緩存,並設置一個資源的最大年齡,報頭被用於指定在時間上的資源的特定點的過期不再有效。
根據該谷歌開發文章,HTTP Caching:
Cache-Control頭被定義爲HTTP/1.1規範 的一部分,並取代先前的報頭(例如到期)用來定義響應 緩存政策。所有現代瀏覽器都支持Cache-Control,因此我們只需要這一點就可以使用 。
Cache-Control在HTTP/1.1中定義,告訴所有從服務器到客戶端的緩存機制他們是否緩存這個對象。它以秒計量:Cache-Control: max-age=3600
。
Expires
標題字段給出響應被視爲陳舊的日期/時間。 Expires值是一個HTTP日期時間戳:Expires: Tue, 18 Jul 2017 16:07:23 GMT
。
如果響應包含Cache-Control
字段與max-age
指令,收件人必須忽略Expires
字段。
如果你還有興趣, 我離開這個建議直接從谷歌的男孩。 https://developers.google.com/speed/docs/insights/LeverageBrowserCaching 他們喜歡到期之前比的Cache-Control
- 1. 有什麼區別Expires和Cache-control:max-age?
- 2. mach頭和fat頭有什麼區別?
- 3. 運行時頭文件和跳板頭文件有什麼區別?
- 4. HTTP參數和HTTP頭文件有什麼區別?
- 5. C++中的iostream,stdio.h和conio.h頭文件有什麼區別?
- 6. .so和.lo文件有什麼區別?
- 7. io_submit和O_ASYNC文件有什麼區別
- 8. .bin和.dat文件有什麼區別?
- 9. .sqlite和.db文件有什麼區別?
- 10. apklib和jar文件有什麼區別?
- 11. XIB和NIB文件有什麼區別?
- 12. NSUserDefaults和.plist文件有什麼區別
- 13. .class和.dex文件有什麼區別?
- 14. cmd文件中%和%%有什麼區別?
- 15. .proto和.prototxt文件有什麼區別
- 16. 流和文件有什麼區別?
- 17. .htc和.js文件有什麼區別?
- 18. .out和.log文件有什麼區別
- 19. .so和.a文件有什麼區別?
- 20. MDB和SDF文件有什麼區別?
- 21. * .bat和* .cmd文件有什麼區別?
- 22. .lib和.a文件有什麼區別?
- 23. HDF5:「文件緩衝區」和「文件緩存」有什麼區別?
- 24. 可可:導入頭文件和導入主文件有什麼區別?
- 25. .Kdb文件,.jks文件和CMS文件有什麼區別?
- 26. 有什麼區別`和$(Bash中有什麼區別?
- 27. 「碼頭日誌」和「碼頭附加」有什麼區別?
- 28. 碼頭圖像和碼頭搜索命令有什麼區別?
- 29. 不同類型的C/C++頭文件有什麼區別
- 30. Unity攝像頭有什麼區別
值得評論說,緩存控制是所有瀏覽器將使用什麼,但同時指定報頭,以防萬一有在路上老代理它是有用的。 – 2012-09-17 14:33:07
使用服務http://redbot.org/(也可以通過[Mark Nottingham](http:// stackoverflow。com/users/152646/mark-nottingham),他寫了上面答案中引用的緩存文章)來檢查緩存頭的正確用法。 – daxim 2013-03-06 14:35:24
此外: 「當存在Cache-Control和Expires時,Cache-Control優先。」 - [mnot.net/cache_docs/](http://www.mnot.net/cache_docs/) – KFunk 2014-08-12 23:02:44