瀏覽器緩存機制全解析:強緩存與協商緩存

瀏覽器緩存是瀏覽器為提升頁面加載速度、減少服務器壓力和節省網絡帶寬,在本地存儲資源(如 HTML、CSS、JS、圖片等)的機制。其核心分為強緩存協商緩存,并涉及多種 HTTP 頭字段和存儲位置。以下是詳細解析:


?? 一、緩存分類與核心機制

1. 強緩存(本地緩存)
  • 原理:瀏覽器直接檢查本地緩存的有效性,未過期則直接使用緩存,不發送請求到服務器。
  • 關鍵字段
    • Cache-Control(HTTP/1.1):
      • max-age=3600:緩存有效期(秒)。
      • public:資源可被瀏覽器和代理服務器(如 CDN)緩存。
      • private:僅瀏覽器可緩存,禁止代理服務器緩存。
      • no-cache:禁用強緩存,必須走協商緩存
      • no-store:完全禁止緩存(包括強緩存和協商緩存)。
    • Expires(HTTP/1.0):絕對過期時間(如 Expires: Wed, 21 Oct 2025 07:28:00 GMT),因依賴客戶端時間可能失效,優先級低于 Cache-Control
  • 生效表現:HTTP 狀態碼 200 (from disk/memory cache)
2. 協商緩存(304 緩存)
  • 原理:強緩存失效后,瀏覽器攜帶緩存標識向服務器驗證資源是否更新。未更新則返回 304,使用緩存;更新則返回新資源。
  • 關鍵字段
    • Last-Modified(響應頭) + If-Modified-Since(請求頭):
      • 服務器返回資源最后修改時間(如 Last-Modified: Mon, 10 Nov 2018 09:10:11 GMT)。
      • 瀏覽器下次請求時攜帶該時間(If-Modified-Since),服務器對比時間判斷是否更新。
      • 缺點:精度僅到秒級,1 秒內多次修改可能誤判。
    • ETag(響應頭) + If-None-Match(請求頭):
      • 服務器返回資源唯一標識(如哈希值,ETag: "d41d8cd98f00b204")。
      • 瀏覽器下次請求攜帶該標識(If-None-Match),服務器對比標識判斷更新。
      • 優先級高于 Last-Modified,但生成 ETag 增加服務器開銷。
  • 生效表現:HTTP 狀態碼 304 (Not Modified)

📍 二、緩存存儲位置

瀏覽器緩存按存儲位置分為四類,優先級依次下降:

  1. Service Worker 緩存
    • 開發者通過 JavaScript 控制,支持離線訪問(PWA 核心),需 HTTPS 協議。
  2. Memory Cache(內存緩存)
    • 存儲當前頁面資源(如 CSS、JS),讀取極快,關閉標簽頁即釋放。
  3. Disk Cache(磁盤緩存)
    • 持久化存儲大型資源(如圖片、視頻),根據 HTTP 頭策略管理緩存,容量大但讀取較慢。
  4. Push Cache(推送緩存)
    • HTTP/2 服務器推送的資源暫存區,會話級有效(約 5 分鐘),使用優先級最低。

🔄 三、緩存完整流程

瀏覽器緩存過程如下(以首次請求為例):

  1. 首次請求資源

    • 瀏覽器無緩存,向服務器發送請求。
    • 服務器返回資源及緩存頭(如 Cache-Control: max-age=3600, ETag: "xyz")。
    • 瀏覽器存儲資源及標識到 Disk CacheMemory Cache
  2. 再次請求相同資源

    • Step 1:檢查強緩存(Cache-Control/Expires):
      • 若未過期 → 直接使用緩存(狀態碼 200 (from cache))。
      • 若過期 → 進入協商緩存流程。
    • Step 2:協商緩存驗證:
      • 瀏覽器攜帶 If-None-Match(ETag 值)或 If-Modified-Since(時間戳)向服務器發起請求。
      • 服務器對比標識:
        • 未更新 → 返回 304,瀏覽器使用緩存。
        • 已更新 → 返回 200 和新資源,更新本地緩存。

?? 四、緩存策略最佳實踐

  1. 靜態資源(JS/CSS/圖片)
    • 強緩存 + 文件名哈希(如 app.a1b2c3.css),更新后文件名變化自動失效緩存。
    • 示例:Cache-Control: public, max-age=31536000, immutable(一年內有效)。
  2. HTML 文件
    • 禁用強緩存(Cache-Control: no-cache),使用協商緩存(ETag),避免加載舊 HTML 導致資源更新失效。
  3. 動態 API 或敏感數據
    • 完全禁用緩存:Cache-Control: no-store

?? 五、注意事項

  1. 刷新操作影響緩存
    • 普通刷新(F5):跳過強緩存,檢查協商緩存。
    • 強制刷新(Ctrl+F5):忽略所有緩存,重新請求服務器。
  2. 緩存失效問題
    • 強緩存時間過長可能導致用戶無法獲取更新,可通過 URL 追加參數(如 ?t=20250805)或文件名哈希解決。

💎 總結:瀏覽器緩存核心要點

類型原理關鍵字段/標識特點
強緩存直接使用本地緩存,不請求服務器Cache-Control > Expires狀態碼 200 (from cache)
協商緩存向服務器驗證緩存是否有效ETag > Last-Modified狀態碼 304 (Not Modified)
Memory Cache內存臨時存儲無特定字段,瀏覽器自動管理讀取快,標簽關閉即釋放
Disk Cache硬盤持久化存儲遵循 HTTP 緩存頭策略容量大,支持跨會話復用

通過合理配置緩存策略,可顯著提升網站性能。實際開發中,建議結合資源類型(靜態/動態)和更新頻率選擇策略,并利用開發者工具(如 Chrome DevTools 的 Network 面板)調試緩存行為。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92426.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92426.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92426.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

知識隨記-----Qt 實用技巧:自定義倒計時按鈕防止用戶頻繁點擊

Qt 技巧:實現自定義倒計時按鈕防止用戶頻繁點擊注冊 項目場景 在一個基于 Qt 開發的聊天應用中,用戶注冊時需要獲取驗證碼。為防止用戶頻繁點擊獲取驗證碼按鈕,需要實現一個倒計時功能,用戶點擊后按鈕進入倒計時狀態,倒…

Linux與Windows應急響應

本人首先進行了linux的應急響應,windows之后再進行 Linux與Windows應急響應初體驗1 linux應急響應1.1 賬戶:1.1.1 使用cat /etc/passwd命令查看passwd文件2.1.2 使用cat /etc/shadow命令查找shadow文件,該文件為密碼文件的存儲項1.2 入侵排查…

計算機網絡1-4:計算機網絡的定義和分類

目錄 計算機網絡的定義 計算機網絡的分類 計算機網絡的定義 計算機網絡的分類 按交換技術分類:電路交換網絡、報文交換網絡、分組交換網絡 按使用者分類:公用網、專用網 按傳輸介質分類:有線網絡、無線網絡 按覆蓋范圍分類:…

在QT中動態添加/刪除控件,伸縮因子該怎么處理

開發中遇到的問題[TOC](開發中遇到的問題)處理方式在我們的界面開發過程中,通常需要開發一些可以動態添加or刪除控件的容器,類似Tab頁一樣,為了美觀的話,我們通常使用伸縮因子將容器中的控件往一個方向擠,類似下面的控…

【設計模式精解】什么是代理模式?徹底理解靜態代理和動態代理

目錄 靜態代理 動態代理 JDK動態代理 CGLIB代理 JDK動態代理和CGLIB代理的區別 總結 代理模式簡單來說就是 我們使用代理對象來代替對真實對象(real object)的訪問,這樣就可以在不修改原目標對象的前提下,擴展目標對象的功能。 代理模式有靜態代理…

MCU AI/ML - 彌合智能和嵌入式系統之間的差距

作者:芯科科技產品營銷高級經理Gopinath Krishniah 人工智能(AI)和機器學習(ML)是使系統能夠從數據中學習、進行推理并隨著時間的推移提高性能的關鍵技術。這些技術通常用于大型數據中心和功能強大的GPU,但…

Redis中的sdshdr的len和alloc那塊的知識點詳解

文章目錄核心比喻:一個可以伸縮的水瓶場景一:創建一個新字符串場景二:追加字符串(觸發“空間預分配”)場景三:再次追加字符串(利用空閑空間)場景四:縮短字符串&#xff0…

在Linux下訪問MS SQL Server數據庫

Linux作為一個免費的Unix類操作系統,以其開放性源代碼、多任務、X window等特點為眾多的用戶所采用,并有很多企業采用Linux來作為其內部網的全功能服務器(WWW,FTP,Email、DNS)。企業的內部網不僅要提供文本信息的訪問,…

計算機視覺-OpenCV

一下載第三方庫opencv-python3.4.18.65opencv-contrib-python3.4.18.65import cv2 # 讀取的格式是BGR numpy import numpy as np# 讀取圖片 a cv2.imread(generated_image.jpg) # 讀取圖片 print(a) # NumPy數組,其中存儲了讀取的圖像文件的像素值。cv2.imshow…

解決GitHub無法打開

找到下圖文件,用記事本打開 在最下方粘貼如下代碼140.82.113.4 github.com 20.205.243.166 github.com 140.82.112.4 github.com 151.101.1.6 github.global.ssl.fastly.net 185.199.108.153 assets-cdn.github.com 185.199.109.153 assets-cdn.github.com 185.199.…

AWS VPC Transit Gateway 可觀測最佳實踐

AWS VPC Transit Gateway 介紹 Amazon VPC Transit Gateway 是一個網絡傳輸中心,用于互連虛擬私有云 (VPCs) 和本地網絡。隨著您的云基礎設施在全球擴展,區域間對等互連使用 AWS 全球基礎設施將中轉網關連接在一起。 AWS 數據中心之間的所有網絡流量都在…

WeakRef的作用和使用

文章目錄WeakRef的作用和使用使用 WeakRef 避免強引用:原理與實踐一、WeakRef 的核心特性二、WeakRef 與強引用的對比三、WeakRef 的使用場景與示例1. 非關鍵數據緩存(避免緩存導致內存泄漏)2. 跟蹤對象生命周期(不干擾回收&#…

【華為機試】332. 重新安排行程

文章目錄332. 重新安排行程題目描述示例 1:示例 2:提示:解題思路核心思路算法流程圖歐拉路徑原理DFS回溯機制字典序優化策略復雜度分析算法實現要點完整題解代碼332. 重新安排行程 題目描述 給你一份航線列表 tickets ,其中 tic…

通信算法之300:CRC表生成方式-CRC8、CRC16、CRC32-輸入字節

"CRC表的MATLAB生成代碼"生成的查找表可以用于快速計算 CRC 值,通過查表法可以顯著提高 CRC 計算效率,尤其適用于需要處理大量數據的場景。下面是一個生成 CRC 查找表(CRC Table)的 MATLAB 代碼,該代碼可以根…

國內使用 npm 時配置鏡像源

在國內使用 npm 時,由于網絡限制可能會遇到下載速度慢或連接超時的問題。通過設置國內鏡像源,可以顯著提升下載速度和穩定性。以下是常用的國內 npm 鏡像源及其配置方法。 查詢當前使用的鏡像源 npm get registry 設置為淘寶鏡像源 npm config set reg…

一篇文章入門TCP與UDP(保姆級別)

🐳第一部分:什么是TCP和UDP? 先給結論:TCP 和 UDP 都是傳輸層協議,負責把數據從一臺電腦 “搬” 到另一臺電腦,但它們的 “搬運風格” 完全不同 📦 比喻:TCP 像 "打電話"&#xff…

2024年測繪程序設計比賽--空間探索性分析(數據為2025年第三次模擬數據)

想要在2026年參加這個比賽的&#xff0c;可以加入小編和其它大佬所建的群242845175一起來備賽&#xff0c;為2026年的比賽打基礎&#xff0c;也可以私信小編&#xff0c;為你答疑解惑一、讀寫文件 internal class Read {public static List<Point> pts new List<Poin…

力扣 hot100 Day68

84. 柱狀圖中最大的矩形 給定 n 個非負整數&#xff0c;用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰&#xff0c;且寬度為 1 。 求在該柱狀圖中&#xff0c;能夠勾勒出來的矩形的最大面積。 class Solution { public:int largestRectangleArea(vector<int>&…

生成式AI時代,Data+AI下一代數智平臺建設指南

DataAI下一代數智平臺建設指南一、生成式AI時代的五大數據挑戰二、驅動DataAI平臺建設的核心要素主動選擇&#xff1a;構建競爭壁壘被動應對&#xff1a;解決現有痛點三、DataAI平臺的六大關鍵能力四、騰訊云DataAI產品方案與實踐1. 數據與AI協同層2. 開發與治理層3. 存儲與計算…

FPGA學習筆記——SPI通訊協議簡介

目錄 一、SPI通訊協議簡介 二、SPI物理層 三、SPI協議層 1.通訊模式 &#xff08;一&#xff09;模式零 &#xff08;二&#xff09;模式一 &#xff08;三&#xff09;模式二 &#xff08;四&#xff09;模式三 2.通訊流程 一、SPI通訊協議簡介 SPI&#xff08;Seria…