http緩存


一、什么是http緩存

  http緩存就是在瀏覽器從服務端請求的資源,通過緩存規則保存在瀏覽器本地,二次請求的時候不再從服務端獲取

  而是直接從本地獲取緩存資源,降低了 服務器壓力,提升了加載速度

二、緩存規則

 1、強制緩存

  首次請求服務端資源時,服務端會在Response Headers 中寫入緩存時間。當請求再次發出時,

  如果緩存時間內,將直接從緩存獲取資源,而不會再與服務器發生通信。

  如果不在緩存時間內,與服務器發生通信。

  主要通過兩個字段控制:

  Expires:Expires字段后面會接一個絕對時間,在這個絕對時間之前強緩存有效,Expires目前已經廢棄

  

  Cache-Control:Cache-Control 是 Expires 的替代方案,可以有幾個值:

       max-age : 單位秒,緩存在這個max-age最大時間內有效

  

  no-cache:跳過強制緩存,采用協商緩存

  no-store:完全不緩存

  2、協商緩存

   協商緩存機制下,瀏覽器需要向服務器去詢問緩存的相關信息,進而判斷是重新發起請求,還是從本地獲取緩存的資源

     兩個控制字段:

    Last-Modified:標識的是資源在服務器上的最后修改時間,當第一次請求的時候,服務會返回 Last-Modified ,當再次請求的時候請求頭

    會帶上 If-Modified-Since:xx(第一次請求返回的 Last- Modified的值),服務器會對比資源在最后修改時間之后是否有變動,有則返回新的資源,

         沒有則返回  304

   

 

    Etag:Etag 是由服務器為每個資源生成的唯一的標識字符串,當第一次請求的時候,服務會返回 Etag 值 ,當再次請求的時候請求頭

    會帶上 if-None-Match:xx(第一次請求返回的 Etag 的值)這個標識字符串是基於文件內容編碼的,只要文件內容不同

    它們對應的 Etag 就是不同的,因此 Etag 能夠精准地感知文件的變化,Etage也是Last-Modified的替代方案

  

 

 

 

 

三:緩存讀取

  瀏覽器緩存到底緩存在哪里?

  

 

    from memory cache代表使用內存中的緩存

  from disk cache則代表使用的是硬盤中的緩存

  • 內存緩存(from memory cache):內存緩存具有兩個特點,分別是快速讀取和時效性:

  • 快速讀取:內存緩存會將編譯解析后的文件,直接存入該進程的內存中,占據該進程一定的內存資源,以方便下次運行使用時的快速讀取。

  • 時效性:一旦該進程關閉,則該進程的內存則會清空。

  • 硬盤緩存(from disk cache):硬盤緩存則是直接將緩存寫入硬盤文件中,讀取緩存需要對該緩存存放的硬盤文件進行I/O操作,然后重新解析該緩存內容,讀取復雜,速度比內存緩存慢。

  在瀏覽器中,瀏覽器會在js和圖片等文件解析執行后直接存入內存緩存中,那么當刷新頁面時只需直接從內存緩存中讀取(from memory cache);而css文件則會存入硬盤文件中

  所以每次渲染頁面都需要從硬盤讀取緩存(from disk cache)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM