在chrome瀏覽器中的控制檯Network中size欄一般會有三種狀態css
1.from memory cachechrome
2.from disk cache瀏覽器
3.資源自己的大小(如:1.5k)緩存
那麼問題來了服務器
1.三種區別在哪裏;2.瀏覽器採起不一樣措施的原則是什麼;3.其餘瀏覽器的策略網絡
下面分別講述以上三個問題spa
1.三種區別在哪.net
from memory cache:字面理解是從內存中,其實也是字面的含義,這個資源是直接從內存中拿到的,不會請求服務器通常已經加載過該資源且緩存在了內存當中,當關閉該頁面時,此資源就被內存釋放掉了,再次從新打開相同頁面時不會出現from memory cache的狀況orm
from disk cache:同上相似,此資源是從磁盤當中取出的,也是在已經在以前的某個時間加載過該資源,不會請求服務器可是此資源不會隨着該頁面的關閉而釋放掉,由於是存在硬盤當中的,下次打開仍會from disk cacheblog
資源自己大小數值:當http狀態爲200是實實在在從瀏覽器獲取的資源,當http狀態爲304時該數字是與服務端通訊報文的大小,並非該資源自己的大小,該資源是從本地獲取的
2.chrome採起措施的準則
何時是from memory cache 何時是from disk cache 呢?
即哪些資源會放在內存當中,哪些資源瀏覽器會放在磁盤上呢,結果以下下表所示
狀態 | 類型 | 說明 |
200 | form memory cache | 不請求網絡資源,資源在內存當中 |
200 | form disk ceche | 不請求網絡資源,在磁盤當中 |
200 | 資源大小數值 | 從服務器下載最新資源 |
304 | 報文大小 | 請求服務端發現資源沒有更新,使用本地資源 |
以上是chrome在請求資源是最多見的兩種http狀態碼
因而可知樣式表通常在磁盤中,不會緩存到內存中去,由於css樣式加載一次便可渲染出網頁
可是腳本卻可能隨時會執行,若是腳本在磁盤當中,在執行該腳本須要從磁盤中取到內存當中來
這樣的IO開銷是比較大的,有可能會致使瀏覽器失去響應
3.不一樣瀏覽器策略是否一致
以上的數據及統計都是在chrome瀏覽器下進行的
在Firefox下並無from memory cache以及from disk cache的狀態展示
相同的資源在chrome下是from disk/memory cache,可是Firefox通通是304狀態碼
即Firefox下會緩存資源,可是每次都會請求服務器對比當前緩存是否更改,chrome不請求服務器,直接拿過來用
這也是爲啥chrome比較快的緣由之一吧,
固然以上是粗略的研究chrome資源的獲取策略,至於chrome如何保證資源的更新,
即何時200,何時304還須要更深刻的研究 參考:https://blog.csdn.net/garrettzxd/article/details/80684880