1. 程式人生 > >from memory cache與from disk cache詳解

from memory cache與from disk cache詳解

在chrome瀏覽器中的控制檯Network中size欄通常會有三種狀態

1.from memory cache

2.from disk cache

3.資源本身的大小(如:1.5k)

那麼問題來了

1.三種區別在哪裡;2.瀏覽器採取不同措施的原則是什麼;3.其他瀏覽器的策略

下面分別講述以上三個問題

1.三種區別在哪

from memory cache:字面理解是從記憶體中,其實也是字面的含義,這個資源是直接從記憶體中拿到的,不會請求伺服器一般已經載入過該資源且快取在了記憶體當中,當關閉該頁面時,此資源就被記憶體釋放掉了,再次重新開啟相同頁面時不會出現from memory cache的情況

from disk cache:同上類似,此資源是從磁碟當中取出的,也是在已經在之前的某個時間載入過該資源,不會請求伺服器但是此資源不會隨著該頁面的關閉而釋放掉,因為是存在硬碟當中的,下次開啟仍會from disk cache

資源本身大小數值:當http狀態為200是實實在在從瀏覽器獲取的資源,當http狀態為304時該數字是與服務端通訊報文的大小,並不是該資源本身的大小,該資源是從本地獲取的

2.chrome採取措施的準則

什麼時候是from memory cache 什麼時候是from disk cache 呢?

即哪些資源會放在記憶體當中,哪些資源瀏覽器會放在磁碟上呢,結果如下下表所示

統計表 狀態    型別    說明 200    form memory cache     不請求網路資源,資源在記憶體當中,一般指令碼、字型、圖片會存在記憶體當中

200    form disk ceche    不請求網路資源,在磁碟當中,一般非指令碼會存在記憶體當中,如css等 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還需要更深入的研究