日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端浏览器缓存机制

發布時間:2023/12/14 HTML 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端浏览器缓存机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1 緩存定義及其優點
  • 2 強緩存
    • 2.1 expires 和 Cache-Control
  • 3 協商緩存
  • 4 瀏覽器緩存位置

1 緩存定義及其優點

什么是緩存?
當我們第一次訪問網站的時候,電腦會把網站上的圖片和數據下載到電腦上,當我們再次訪問的時候,網站就會從電腦中直接加載出來,這就是緩存。比如我們訪問網頁點擊后退功能的時候,加載的非常快,這就是緩存的優勢。
緩存優點:
1 緩存服務器壓力,不用每次都去請求某些數據了
2 提升性能,打開本地資源肯定會比請求服務器更快
3 減少帶寬消耗,當我們使用緩存時,只會產生很小的網絡消耗。
瀏覽器緩存過程:
強緩存
協商緩存
強緩存與協商緩存的區別:
強緩存不發請求到服務器,所以有時候資源更新了瀏覽器還不知道,但是協商緩存會發請求到服務器,所以資源是否更新,服務器肯定知道。
大部分web服務器都默認開啟協商緩存
瀏覽器緩存位置
Service Worker
Memory Cache
Disk Cache
Push Cache

2 強緩存

???????強緩存是當我們訪問URL的時候,不會向服務器發送請求,直接從緩存中讀取資源,但是會返回200的狀態碼。

如何設置強緩存?

???????我們第一次進入頁面,請求服務器,服務器會進行應答,瀏覽器根據服務器的應答respon Header來判斷是否對資源進行緩存,如果響應頭中有expires、pragma或cache-control字段,代表是強緩存,瀏覽器就會把資源緩存在memory cache 或 disk cache中。

???????第二次請求時,瀏覽器判斷請求參數,如果符合強緩存條件就直接返回狀態碼200,從本地緩存中拿數據。否則把響應參數存在request header請求中,看是否符合協商緩存,符合則返回狀態碼304,不符合則服務器返回全新資源。

2.1 expires 和 Cache-Control

  • Cache-Control 是HTTP1.1 中新增的響應頭
  • Expires 是HTTP1.0 中的響應頭
  • Cache-Control 使用的是相對時間
  • Expires 指定的是具體的過期時間而不是秒數。
  • Cache-Control 和 Expires同時使用的話,Cache-Control 會覆蓋Expires
  • ???????Expires:設置瀏覽器緩存時間,時間是絕對時間,從設置的值上可以看出是個日期,瀏覽器收到Response時看看有沒有Expires字段有的話緩存頭信息和資源,再次請求時查看緩存時間過沒過,沒過在緩存拿出來,過了重新請求。

    Cache-Control都可以設置哪些屬性
    max-age(單位為s):指定設置緩存最大的有效時間,定義的是時間長短。當瀏覽器向服務器發送請求后,在max-age這段時間里瀏覽器就不會再向服務器發送請求了。
    public : 指定響應可以在代理緩存中被緩存,于是可以被多用戶共享。如果沒有明確指定private,則默認為public。
    private : 響應只能在私有緩存中被緩存,不能放在代理緩存上。對一些用戶信息敏感的資源,通常需要設置為private。
    no-cache : 表示必須先與服務器確認資源是否被更改過(依靠If-None-Match和Etag),然后再決定是否使用本地緩存。
    no-store : 絕對禁止緩存任何資源,也就是說每次用戶請求資源時,都會向服務器發送一個請求,每次都會下載完整的資源。通常用于機密性資源。


    服務端如何判斷緩存已失效?

    瀏覽器或代理緩存中緩存的資源過期了,并不意味著它和原始服務器上的資源有實際的差異,僅僅意味著到了要進行核對的時間了。這種情況被稱為服務器再驗證。
    如果資源發生變化,則需要取得新的資源,并在緩存中替換舊資源。
    如果資源沒有發生變化,緩存只需要獲取新的響應頭,和一個新的過期時間,對緩存中的資源過期時間進行更新即可

    HTTP1.1推薦使用的驗證方式是If-None-Match/Etag,在HTTP1.0中則使用If-Modified-Since/Last-Modified。

    3 協商緩存

    觸發條件

    Cache-Control 的值為 no-cache (不強緩存) 或者 max-age 過期了 (強緩存,但總有過期的時候)

    當瀏覽器判斷不是強緩存,就會向服務器發請求,判斷是否是協商緩存。如果是,服務器會返回304 Not Modified,瀏覽器從緩存中加載。

    Last-Modified和If-Modified-Since字段

    1、瀏覽器第一次向服務器發請求,服務器返回資源并在response header加上Last-Modified字段,表示資源最后修改的時間。
    2、瀏覽器再次請求這個資源時,請求頭會加上If-Modified-Since字段。若這兩個字段一樣,說明資源沒有修改過,返回304Not Modified,瀏覽器從緩存中獲取資源。若這兩個字段不一樣,說明資源修改過,服務器正常返回資源。

    ETag、If-None-Match

    但有時候服務器上資源有變化,單最后修改時間沒更新,則引出下面兩個字段。
    1、瀏覽器第一次向服務器請求,服務器返回資源并在response header上加ETag字段。表示資源本身,資源有變化,則該字段有變化。
    2、瀏覽器再次向服務器請求這個資源時,請求頭攜帶If-None-Match字段。若這兩個字段相同,則代表資源沒有變化,服務器返回304Not Modified,瀏覽器從緩存中加載。若兩個字段不同,證明資源有變動,服務器正常返回資源。

    4 瀏覽器緩存位置

    ????????查找瀏覽器緩存時會按順序查找: Service Worker–>Memory Cache–>Disk Cache–>Push Cache。

    1 Service Worker
    是運行在瀏覽器背后的獨立線程,一般可以用來實現緩存功能。使用 Service Worker的話,傳輸協議必須為 HTTPS。因為 Service Worker 中涉及到請求攔截,所以必須使用 HTTPS 協議來保障安全。Service Worker 的緩存與瀏覽器其他內建的緩存機制不同,它可以讓我們自由控制緩存哪些文件、如何匹配緩存、如何讀取緩存,并且緩存是持續性的
    2 Memory Cache
    內存中的緩存,主要包含的是當前中頁面中已經抓取到的資源,例如頁面上已經下載的樣式、腳本、圖片等。讀取內存中的數據肯定比磁盤快,內存緩存雖然讀取高效,可是緩存持續性很短,會隨著進程的釋放而釋放。一旦我們關閉 Tab 頁面,內存中的緩存也就被釋放了。
    3 Disk Cache
    存儲在硬盤中的緩存,讀取速度慢點,但是什么都能存儲到磁盤中,比之 Memory Cache 勝在容量和存儲時效性上。
    ???????在所有瀏覽器緩存中,Disk Cache 覆蓋面基本是最大的。它會根據 HTTP Herder 中的字段判斷哪些資源需要緩存,哪些資源可以不請求直接使用,哪些資源已經過期需要重新請求。并且即使在跨站點的情況下,相同地址的資源一旦被硬盤緩存下來,就不會再次去請求數據。絕大部分的緩存都來自 Disk Cache。
    4 Push Cache
    Push Cache(推送緩存)是 HTTP/2 中的內容,當以上三種緩存都沒有命中時,它才會被使用。它只在會話(Session)中存在,一旦會話結束就被釋放,并且緩存時間也很短暫,在Chrome瀏覽器中只有5分鐘左右,同時它也并非嚴格執行HTTP頭中的緩存指令。
    5 CPU、內存、硬盤
    這里提到了硬盤,內存,可能有些小伙伴對硬盤,內存沒什么直觀的概念。
    ???????CPU、內存、硬盤都是計算機的主要組成部分。
    ???????CPU:中央處理單元(CntralPocessingUit)的縮寫,也叫處理器,是計算機的運算核心和控制核心。電腦靠CPU來運算、控制。讓電腦的各個部件順利工作,起到協調和控制作用。
    ???????硬盤:存儲資料和軟件等數據的設備,有容量大,斷電數據不丟失的特點。
    ???????內存:負責硬盤等硬件上的數據與CPU之間數據交換處理。特點是體積小,速度快,有電可存,無電清空,即電腦在開機狀態時內存中可存儲數據,關機后將自動清空其中的所有數據。

    參考鏈接

    總結

    以上是生活随笔為你收集整理的前端浏览器缓存机制的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。