前端浏览器缓存机制
目錄
- 1 緩存定義及其優點
- 2 強緩存
- 2.1 expires 和 Cache-Control
- 3 協商緩存
- 4 瀏覽器緩存位置
1 緩存定義及其優點
什么是緩存?2 強緩存
???????強緩存是當我們訪問URL的時候,不會向服務器發送請求,直接從緩存中讀取資源,但是會返回200的狀態碼。
如何設置強緩存?
???????我們第一次進入頁面,請求服務器,服務器會進行應答,瀏覽器根據服務器的應答respon Header來判斷是否對資源進行緩存,如果響應頭中有expires、pragma或cache-control字段,代表是強緩存,瀏覽器就會把資源緩存在memory cache 或 disk cache中。
???????第二次請求時,瀏覽器判斷請求參數,如果符合強緩存條件就直接返回狀態碼200,從本地緩存中拿數據。否則把響應參數存在request header請求中,看是否符合協商緩存,符合則返回狀態碼304,不符合則服務器返回全新資源。
2.1 expires 和 Cache-Control
???????Expires:設置瀏覽器緩存時間,時間是絕對時間,從設置的值上可以看出是個日期,瀏覽器收到Response時看看有沒有Expires字段有的話緩存頭信息和資源,再次請求時查看緩存時間過沒過,沒過在緩存拿出來,過了重新請求。
Cache-Control都可以設置哪些屬性
服務端如何判斷緩存已失效?
HTTP1.1推薦使用的驗證方式是If-None-Match/Etag,在HTTP1.0中則使用If-Modified-Since/Last-Modified。
3 協商緩存
觸發條件:
Cache-Control 的值為 no-cache (不強緩存) 或者 max-age 過期了 (強緩存,但總有過期的時候)當瀏覽器判斷不是強緩存,就會向服務器發請求,判斷是否是協商緩存。如果是,服務器會返回304 Not Modified,瀏覽器從緩存中加載。
Last-Modified和If-Modified-Since字段:
1、瀏覽器第一次向服務器發請求,服務器返回資源并在response header加上Last-Modified字段,表示資源最后修改的時間。
2、瀏覽器再次請求這個資源時,請求頭會加上If-Modified-Since字段。若這兩個字段一樣,說明資源沒有修改過,返回304Not Modified,瀏覽器從緩存中獲取資源。若這兩個字段不一樣,說明資源修改過,服務器正常返回資源。
ETag、If-None-Match:
但有時候服務器上資源有變化,單最后修改時間沒更新,則引出下面兩個字段。
1、瀏覽器第一次向服務器請求,服務器返回資源并在response header上加ETag字段。表示資源本身,資源有變化,則該字段有變化。
2、瀏覽器再次向服務器請求這個資源時,請求頭攜帶If-None-Match字段。若這兩個字段相同,則代表資源沒有變化,服務器返回304Not Modified,瀏覽器從緩存中加載。若兩個字段不同,證明資源有變動,服務器正常返回資源。
4 瀏覽器緩存位置
????????查找瀏覽器緩存時會按順序查找: Service Worker–>Memory Cache–>Disk Cache–>Push Cache。
1 Service Worker???????在所有瀏覽器緩存中,Disk Cache 覆蓋面基本是最大的。它會根據 HTTP Herder 中的字段判斷哪些資源需要緩存,哪些資源可以不請求直接使用,哪些資源已經過期需要重新請求。并且即使在跨站點的情況下,相同地址的資源一旦被硬盤緩存下來,就不會再次去請求數據。絕大部分的緩存都來自 Disk Cache。
???????CPU、內存、硬盤都是計算機的主要組成部分。
???????CPU:中央處理單元(CntralPocessingUit)的縮寫,也叫處理器,是計算機的運算核心和控制核心。電腦靠CPU來運算、控制。讓電腦的各個部件順利工作,起到協調和控制作用。
???????硬盤:存儲資料和軟件等數據的設備,有容量大,斷電數據不丟失的特點。
???????內存:負責硬盤等硬件上的數據與CPU之間數據交換處理。特點是體積小,速度快,有電可存,無電清空,即電腦在開機狀態時內存中可存儲數據,關機后將自動清空其中的所有數據。
參考鏈接
總結
- 上一篇: dataformatstring(Dat
- 下一篇: 浏览器会不会缓存html,浏览器缓存机制