一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

nginx中強(qiáng)緩存和協(xié)商緩存介紹

馬哥Linux運(yùn)維 ? 來源:博客園dashery ? 2025-04-01 16:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、強(qiáng)緩存(Strong Cache)

1.定義

? 強(qiáng)緩存直接告訴瀏覽器:在緩存過期前,無需與服務(wù)器通信,直接使用本地緩存。
? 由服務(wù)器通過響應(yīng)頭Cache-ControlExpires控制。

2.響應(yīng)頭

?Cache-Control: max-age=3600
表示資源在3600 秒(1小時(shí))內(nèi)有效(優(yōu)先級高于Expires)。
?Expires: Thu, 31 Dec 2030 2359 GMT
指定一個絕對過期時(shí)間(依賴于客戶端本地時(shí)間,可能存在誤差)。

3.Nginx 配置示例

location/static/ {
 # 設(shè)置強(qiáng)緩存:1年內(nèi)有效
 add_headerCache-Control"public, max-age=31536000";
 expires1y;
}

4.行為

? 瀏覽器首次請求資源時(shí),服務(wù)器返回資源并附帶緩存頭。
? 后續(xù)請求時(shí),瀏覽器直接讀取本地緩存(狀態(tài)碼200 (from disk cache)),不發(fā)送請求到服務(wù)器。

5.適用場景

? 靜態(tài)資源(如 CSS、JS、圖片、字體文件)等長期不變的資源。

二、協(xié)商緩存(協(xié)商緩存,Weak Cache)

1.定義

? 協(xié)商緩存要求瀏覽器每次向服務(wù)器驗(yàn)證緩存是否過期,若未過期則返回304 Not Modified,繼續(xù)使用本地緩存。
? 由服務(wù)器通過響應(yīng)頭Last-ModifiedETag控制。

2.響應(yīng)頭

?Last-Modified: Wed, 21 Oct 2023 0700 GMT
表示資源最后修改時(shí)間(精度為秒,可能因時(shí)間同步問題失效)。
?ETag: "5d8c72a5-264"
資源的唯一標(biāo)識符(哈希值或版本號),精度更高。

3.Nginx 配置示例

location/dynamic/ {
 # 啟用協(xié)商緩存(默認(rèn)已支持,無需顯式配置)
 add_headerLast-Modified"";
 etagon;
}

4.行為

瀏覽器首次請求資源時(shí),服務(wù)器返回資源并附帶Last-Modified或ETag。

后續(xù)請求時(shí),瀏覽器通過以下請求頭驗(yàn)證緩存:
?If-Modified-Since: [Last-Modified值]
向服務(wù)器詢問資源是否在指定時(shí)間后修改過。
?If-None-Match: [ETag值]
向服務(wù)器驗(yàn)證資源的ETag是否變化。

若資源未修改,服務(wù)器返回304 Not Modified,瀏覽器繼續(xù)使用緩存;若已修改,返回新資源(狀態(tài)碼200)。

5.適用場景

? 頻繁更新的資源(如 HTML 頁面、動態(tài) API 響應(yīng))。

三、關(guān)鍵區(qū)別

特性 強(qiáng)緩存 協(xié)商緩存
通信成本 無網(wǎng)絡(luò)請求(直接讀緩存) 需發(fā)送請求驗(yàn)證緩存
響應(yīng)狀態(tài)碼 200 (from disk cache) 304 Not Modified
優(yōu)先級 優(yōu)先于協(xié)商緩存 強(qiáng)緩存過期后觸發(fā)
適用資源 長期不變的靜態(tài)資源 頻繁更新的動態(tài)資源

四、Nginx 最佳實(shí)踐

混合使用兩種緩存

location/ {
 # 強(qiáng)緩存 1 小時(shí),過期后啟用協(xié)商緩存
 add_headerCache-Control"public, max-age=3600";
 etagon;
}

按文件類型區(qū)分策略

# 圖片、字體等強(qiáng)緩存
location~* .(jpg|png|gif|woff2)${
 expires1y;
 add_headerCache-Control"public, max-age=31536000";
}

# HTML 文件禁用強(qiáng)緩存(總是協(xié)商)
location~* .html${
 add_headerCache-Control"no-cache, must-revalidate";
}

解決緩存更新問題
? 強(qiáng)緩存資源建議通過文件名哈希控制版本(如main.abcd1234.js)。
? 協(xié)商緩存可通過修改ETag或Last-Modified觸發(fā)更新。

五、調(diào)試工具

瀏覽器開發(fā)者工具(Network 標(biāo)簽):
? 查看200 (from disk cache)(強(qiáng)緩存)或304 Not Modified(協(xié)商緩存)。
? 檢查請求頭中的Cache-Control、If-Modified-Since、If-None-Match。

命令行工具:

curl -I http://example.com/resource.js

通過合理配置強(qiáng)緩存和協(xié)商緩存,可以顯著提升網(wǎng)站性能,減少服務(wù)器負(fù)載。

鏈接:https://www.cnblogs.com/ydswin/p/18757690

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 緩存
    +關(guān)注

    關(guān)注

    1

    文章

    245

    瀏覽量

    27096
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1040

    瀏覽量

    36176
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    168

    瀏覽量

    12537

原文標(biāo)題:什么是nginx的強(qiáng)緩存和協(xié)商緩存

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Nginx緩存配置詳解

    Nginx 是一個功能強(qiáng)大的 Web 服務(wù)器和反向代理服務(wù)器,它可以用于實(shí)現(xiàn)靜態(tài)內(nèi)容的緩存,緩存可以分為客戶端緩存和服務(wù)端緩存。
    的頭像 發(fā)表于 05-07 14:03 ?494次閱讀
    <b class='flag-5'>Nginx</b><b class='flag-5'>緩存</b>配置詳解

    什么是追蹤緩存/轉(zhuǎn)接卡?

    什么是追蹤緩存/轉(zhuǎn)接卡?  追蹤緩存  在奔騰IV一級緩存,一般一級緩存的指令
    發(fā)表于 02-04 10:40 ?508次閱讀

    內(nèi)容中心網(wǎng)絡(luò)基于緩存索引的緩存路由機(jī)制

    內(nèi)容中心網(wǎng)絡(luò)基于緩存索引的緩存路由機(jī)制_王好齊
    發(fā)表于 01-07 20:49 ?0次下載

    詳解瀏覽器的緩存機(jī)制

    緩存一直是前端優(yōu)化的主戰(zhàn)場,利用好緩存就成功了一半。本篇從HTTP請求和響應(yīng)的頭域入手,讓你對瀏覽器緩存有個整體的概念。最終你會發(fā)現(xiàn)強(qiáng)緩存,
    發(fā)表于 09-30 11:27 ?0次下載
    詳解瀏覽器的<b class='flag-5'>緩存</b>機(jī)制

    Mybatis緩存之一級緩存

    本文主要講mybatis的一級緩存,一級緩存是SqlSession級別的緩存。mybatis提供查詢緩存,用于減輕數(shù)據(jù)壓力,提高數(shù)據(jù)庫性能。mybaits提供一級
    發(fā)表于 11-27 20:44 ?1303次閱讀
    Mybatis<b class='flag-5'>緩存</b>之一級<b class='flag-5'>緩存</b>

    渲染的幀緩存和深度緩存

    渲染涉及大量的緩存,這里緩存只是一個簡單的存有像素?cái)?shù)據(jù)的矩形內(nèi)存塊,最重要緩存是幀緩存和深度緩存。
    的頭像 發(fā)表于 05-14 11:44 ?7104次閱讀
    渲染<b class='flag-5'>中</b>的幀<b class='flag-5'>緩存</b>和深度<b class='flag-5'>緩存</b>

    一文知道Nginx服務(wù)器的緩存原理和機(jī)制

    Nginx服務(wù)器的緩存原理,是在學(xué)習(xí)過程中比較重要的一個知識點(diǎn),學(xué)習(xí)通透之后,對于自己的能力會有不小的提升——而且提升不只限于nginx一方面,技術(shù)理論一通百通,對于理解其他內(nèi)容也會有很大幫助。
    的頭像 發(fā)表于 10-05 09:01 ?2637次閱讀
    一文知道<b class='flag-5'>Nginx</b>服務(wù)器的<b class='flag-5'>緩存</b>原理和機(jī)制

    什么是Web緩存,HTTP緩存和瀏覽器緩存的區(qū)別

    前端緩存主要是分為HTTP緩存和瀏覽器緩存。其中HTTP緩存是在HTTP請求傳輸時(shí)用到的緩存,主要在服務(wù)器代碼上設(shè)置;而瀏覽器
    發(fā)表于 09-13 04:17 ?9645次閱讀
    什么是Web<b class='flag-5'>緩存</b>,HTTP<b class='flag-5'>緩存</b>和瀏覽器<b class='flag-5'>緩存</b>的區(qū)別

    緩存的基本原理 緩存的分類

    緩存的主要手段有:瀏覽器緩存、CDN、反向代理、本地緩存、分布式緩存、數(shù)據(jù)庫緩存。
    發(fā)表于 06-13 12:04 ?5084次閱讀

    如何在SpringBoot解決Redis的緩存穿透等問題

    今天給大家介紹一下如何在SpringBoot解決Redis的緩存穿透、緩存擊穿、緩存雪崩的問題。
    的頭像 發(fā)表于 04-28 11:35 ?913次閱讀

    Caffeine教程緩存介紹

    緩存(Cache)在代碼世界無處不在。從底層的CPU多級緩存,到客戶端的頁面緩存,處處都存在著緩存的身影。
    的頭像 發(fā)表于 05-22 11:01 ?1229次閱讀
    Caffeine教程<b class='flag-5'>緩存</b><b class='flag-5'>介紹</b>

    聊聊本地緩存和分布式緩存

    本地緩存 :應(yīng)用緩存組件,緩存組件和應(yīng)用在同一進(jìn)程緩存的讀寫非???,沒有網(wǎng)絡(luò)開銷。但各應(yīng)
    發(fā)表于 06-11 15:12 ?1048次閱讀
    聊聊本地<b class='flag-5'>緩存</b>和分布式<b class='flag-5'>緩存</b>

    如何使用緩存

    緩存技術(shù)被認(rèn)為是減輕服務(wù)器負(fù)載、降低網(wǎng)絡(luò)擁塞、增強(qiáng)Web可擴(kuò)展性的有效途徑之一,其基本思想是利用客戶訪問的時(shí)間局部性(Temproral Locality)原理, 將客戶訪問過的內(nèi)容在Cache
    的頭像 發(fā)表于 10-08 14:07 ?886次閱讀

    Redis緩存預(yù)熱+緩存雪崩+緩存擊穿+緩存穿透要點(diǎn)簡析

    緩存預(yù)熱就是系統(tǒng)上線后,提前將相關(guān)的緩存數(shù)據(jù)直接加載到緩存系統(tǒng)。
    的頭像 發(fā)表于 12-25 09:41 ?1130次閱讀
    Redis<b class='flag-5'>緩存</b>預(yù)熱+<b class='flag-5'>緩存</b>雪崩+<b class='flag-5'>緩存</b>擊穿+<b class='flag-5'>緩存</b>穿透要點(diǎn)簡析

    緩存之美——如何選擇合適的本地緩存?

    Guava cache是Google開發(fā)的Guava工具包中一套完善的JVM本地緩存框架,底層實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)類似于ConcurrentHashMap,但是進(jìn)行了更多的能力拓展,包括緩存過期時(shí)間設(shè)置、緩存容量設(shè)置、多種淘汰策略、
    的頭像 發(fā)表于 11-17 14:24 ?791次閱讀
    <b class='flag-5'>緩存</b>之美——如何選擇合適的本地<b class='flag-5'>緩存</b>?