[英]How does the chrome browser determine memory cache and disk cache?
瀏覽器檢查由 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 緩存保存在 RAM 上,可以更快地寫入和訪問,但在機器關閉或某些其他情況下會被擦除。 磁盤緩存被寫入硬盤驅動器,盡管讀取和寫入速度較慢,但仍將保留在那里。
使用this
文檔,特別是Caching
部分,我了解到有兩個緩存, an on-disk cache and a very fast in-memory cache
。
至於您的實際問題,Chrome 如何決定將哪些內容緩存在哪里,我相信下一行提供了答案
內存緩存的生命周期與渲染進程的生命周期相關聯,大致對應於一個選項卡
雖然我不完全確定,但我相信內存緩存服務於當前選項卡。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.