HTTP緩存過程詳解

HTTP緩存過程詳解

http緩存作爲面試常考題目,我們必須理解他的詳細過程,接下來請大家務必理解並牢記這篇博客的所有內容,大家也不要閒內容多,因爲http不管是在面試還是在工作中,真的很重要。而且在面試中,我們可以通過詳細描述http緩存,不僅讓面試官對我們有好感,還能拖延時間,讓面試官少問其他比較難的問題。

HTTP文件緩存是基於HTTP協議的瀏覽器端文件緩存機制。
在文件重複請求的情況下,瀏覽器可以根據HTTP響應的協議頭信息判斷是從服務器端請求文件還是從本地讀取文件。
Chrome控制檯Application下的Frames就可以查看瀏覽器的HTTP文件緩存列表內容。

首先我們需要了解HTTP緩存的兩種方式。

  • Expires:在HTTP1.1版本之前,瀏覽器緩存主要是通過對HTTP 1.0 的Expires頭部控制來實現的,Expires只能根據絕對時間來刷新緩存內容。
  • Cache-Control:HTTP 1.1增加了Cache-Control頭域,可以支持max-age用來表示相對過期時間

另外請求服務器時也可以根據EtagLast-Modified來判斷是否從瀏覽器端緩存中加載文件,此時緩存的控制和判斷將決定服務器的響應報文中頭部內容的狀態碼200還是304。

瀏覽器發起請求,頭部域字段的判斷過程

  1. 瀏覽器會先查詢Cache-Control (這裏用Expires判斷也是可以的,如果兩者都設置了,則只有Cache-Control的設置生效)來判斷內容是否過期,如果未過期,則直接讀取瀏覽器端緩存文件,不發送HTTP請求,否則進入下一步。
  2. 在瀏覽器端判斷上次文件返回頭中是否含有Etag信息,有則帶上If-None-Match字段信息發送請求給服務器,服務端判斷Etag未修改則返回304,如果修改則返回200,否則進入下一步。
  3. 在瀏覽器端判斷上次文件返回頭中是否含有Last-Modifed信息,有則帶上
    If-Modified-Since字段信息發送請求,服務端判斷Last-Modified失效則返回200, 有效則返回
    304。
  4. 如果EtagLast-Modified都不存在,則直接向服務器請求內容。

這就是Cache-ControlEtagLast-Modified控制請求緩存的主要過程。

我們可以結合流程圖來詳細理解下HTTP緩存判斷過程。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章