我們在使用 Chrome
的 devtools
里的 network
查看網絡請求情況時,常常會在 Size
那一列看到 (from disk cache)
和 (from memory cache)
的灰字信息,這些信息是什么意思,又是在什么情況下會出現呢?
從字面意思不難理解,這都是瀏覽器的一種緩存機制。disk
是從硬盤中讀取資源,而 memory
則是從內存中獲取資源,兩者的區別就是內存和硬盤的區別:memory
中的資源是臨時的,當關閉或者刷新頁面后就會丟失;而 disk
是存在硬盤上的,可以從文件夾中找到。
那是不是 memory
中的資源等下載加載頁面的時候又要從服務器獲取呢?其實不然,memory
中的資源其實也同時會存在 disk
中,所以下一次加載,瀏覽器會優先從 disk
中檢索。
緊接著的問題:哪些資源會被瀏覽器緩存?
首先這個資源是需要通過 GET
請求的,然后資源類型為 [ 腳本、樣式表、圖片、媒體、字體 ] 是會緩存在 disk
中的,而其中的 [ 腳本、圖片、字體 ] 又是會緩存在 memory
中的。
最后一個問題:瀏覽器對緩存資源大小有沒有限制?
Chrome 是使用動態緩存機制,也就是說在 默認行為 下,它所使用的緩存空間大小是自我控制的,例如,當網速很慢的是,Chrome 會嘗試盡可能多的緩存資源;另外,當你計算機本身就存儲空間不足的時候,它又會根據算法存儲重要的資源。
我們上面說到“默認行為”,其實也可以人為控制其使用的緩存空間。設置方法是打開 Chrome
快捷方式的【屬性】,在【目標】后面加上 -disk-cache-size=xxx
這個參數,xxx
就是空間大小,單位是 Byte。另外使用 -disk-cache-dir
這個參數還能修改緩存目錄。
<End />