簡體   English   中英

chrome瀏覽器如何判斷memory緩存和磁盤緩存?

[英]How does the chrome browser determine memory cache and disk cache?

當我請求資源時,我知道 Google Chrome 支持from memory cachefrom disk cache 但是,我之前沒有from memory cache中看到。

chrome如何判斷memory應該緩存哪些資源?

在此處輸入圖像描述

瀏覽器檢查由 web 服務器生成的 HTTP 響應的標頭。 有四種常用的緩存頭:

ETag Cache-Control Expires Last-Modified

Chrome 在許多抽象層次上實現了緩存。 核心是 HTTP(瀏覽器)緩存 - 其他緩存機制的后端。 通常緩存可以分為:

HTTP 緩存 Service Worker 緩存 閃爍緩存 HTTP 緩存

通過網絡發出的每個請求都由遵循 RFC 的 HTTP 緩存代理。 當第一次請求時,緩存被覆蓋。 資源由源 url 鍵控。

服務工作者緩存

要優雅地處理網絡連接故障,您可以使用 Service Worker。 緩存和緩存存儲將再次從磁盤中取出。

閃爍緩存

Blink 在兩種創建模式中使用 Http 緩存作為后端 - 在 memory 和簡單(文件系統)中。 使用哪一個取決於全局為緩存設置的限制,它們可以占用多少 memory。 當前的渲染器緩存也獲得了最多的份額。 緩存的是 fonts、圖像和腳本。 如果全局 memory 使用量達到某個指定閾值,則使用文件系統后端。

強制進入 memory 緩存

如果您希望通過 memory 覆蓋默認機制來提供文件,您可以實現自己的 Service Worker。 使用文件 Api,可以將資源讀取並存儲到 memory 中的 object 中。 然后覆蓋 fetch 事件將禁止使用從這個全局 object 提供的內容進行網絡和文件讀取。

Chrome瀏覽器主要是從響應header中查看cache-control header; 如果這個 header 是immutable的,它會將響應存儲到磁盤。 Memory 緩存從 RAM 加載,因此比磁盤緩存快得多 & Memory 緩存在關閉時不會保留,選項卡緩存將被清除,但磁盤緩存將保留直到到期。 這是瀏覽器分配給它們更大的 memory 的主要原因之一。

您可能還需要了解此Memory 緩存與磁盤緩存

參考HTTP 緩存圖表,讓您輕松了解緩存流程

許多因素:

  • 資源大小:資源越小,越有可能緩存在memory中。
  • 訪問頻率:資源被訪問的頻率越高,它就越有可能被緩存。
  • 安全性:資源越安全(https 來源),就越有可能被緩存。
  • 用戶的瀏覽習慣:用戶訪問站點的頻率越高,Chrome 就越有可能將其部分資源存儲在 memory 中。
  • 資源類型:通常在網站的多個頁面上使用的圖像和腳本可能會緩存在 memory 中,以避免用戶在不同頁面之間導航時重新下載它們。

Memory 緩存保存在 RAM 上,可以更快地寫入和訪問,但在機器關閉或某些其他情況下會被擦除。 磁盤緩存被寫入硬盤驅動器,盡管讀取和寫入速度較慢,但​​仍將保留在那里。

使用this文檔,特別是Caching部分,我了解到有兩個緩存, an on-disk cache and a very fast in-memory cache

至於您的實際問題,Chrome 如何決定將哪些內容緩存在哪里,我相信下一行提供了答案

內存緩存的生命周期與渲染進程的生命周期相關聯,大致對應於一個選項卡

雖然我不完全確定,但我相信內存緩存服務於當前選項卡。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM