瀏覽器緩存:
對于訪問的頁面和請求,為了縮短網頁請求資源的距離肖粮,減少延遲,并且由于緩存文件可以重復利用丛晦,還可以減少帶寬奕纫,降低網絡負荷,瀏覽器和服務器都有可能會對請求資源進行緩存烫沙,接下來的文章就簡單介紹和分析瀏覽器的緩存機制匹层。
概括和分析
深入理解瀏覽器的緩存機制:?http://www.reibang.com/p/54cc04190252
作者:浪里行舟
來源:簡書
這篇文章已經有詳細的講解,這里就概括一下:
以簡書首頁的請求為例:
1锌蓄、強制緩存策略(Expires和Cache-Control):當瀏覽器發(fā)起http請求的時候升筏,如果配置了緩存策略且緩存在有效期內,會直接使用瀏覽器緩存瘸爽。不使用強制緩存(Cache-Control=no-chache您访, 或者?max-age=0?)
? ? (1)、圖中請求服務器:是max-age=0 的情況剪决,瀏覽器直接請求服務器資源灵汪,而不是用本地緩存
????(2)、圖中磁盤緩存和內存緩存:就是瀏覽器使用了本地緩存而不再請求服務器資源
2柑潦、協(xié)商緩存策略(Last-Modified和If-Modified-Since享言, ETag和If-None-Match):當瀏覽器發(fā)起http請求的時候,如果強制緩存策略失效妒茬,或者者禁用了強制緩存担锤,這時候會根據(jù) If-Modified-Since 中的值與服務器中這個資源的最后修改時間對比,如果沒有變化乍钻,返回304和空的響應體肛循,直接從緩存讀取,如果If-Modified-Since的時間小于服務器中這個資源的最后修改時間银择,說明文件有更新多糠,于是返回新的資源文件和200。
不使用協(xié)商緩存(Cache-Control=no-store)浩考,這個參數(shù)同時也會禁用強制緩存夹孔。
? ? (1)、服務器資源返回無更新析孽,瀏覽器使用上次請求的資源
(2)搭伤、服務器資源有更新,返回200并返回最新的資源
3怜俐、不使用緩存策略(Cache-Control=no-store):所有內容都不會被緩存,即不使用強制緩存邓尤,也不使用協(xié)商緩存拍鲤。當response head 設置了no-store贴谎,瀏覽器不會對返回的資源做緩存,每次請求都是直接請求服務器季稳。這可以保證瀏覽器每次都能拿最新的資源擅这,即使資源對比上次請求沒有任何更新,但同時也降低了頁面的響應速度景鼠,和增加了網絡的IO與服務器的壓力仲翎。
可以明顯的看到請求時間,請求服務器資源時間 >> 請求磁盤緩存 > 請求內存緩存莲蜘,所以合適的緩存策略谭确,可以在不影響業(yè)務的情況下帘营,極大地提升客戶體驗和后臺服務器壓力票渠。