HTTP緩存

緩存是提升頁面性能的一項重要技術(shù),而HTTP

緩存技術(shù)在我們?nèi)粘J褂脼g覽器時被廣泛應(yīng)用。

HTTP緩存分為兩種類型
  1. 強(qiáng)緩存
  2. 協(xié)商緩存

下面主要解釋下這兩種緩存是如何實(shí)現(xiàn)的

  1. 場景解釋兩種概念
    強(qiáng)緩存:場景:在瀏覽器訪問某個頁面時,(可以認(rèn)為瀏覽器發(fā)送網(wǎng)絡(luò)請求前都會去內(nèi)存中查找緩存)在瀏覽器緩存中命中了某個緩存,判斷緩存是否有效,如果有效會直接將緩存內(nèi)容作為網(wǎng)絡(luò)請求的返回結(jié)果,且標(biāo)注狀態(tài)碼為200 (from cache) 。
    協(xié)商緩存:在瀏覽器讀緩存時,發(fā)現(xiàn)緩存過期,就發(fā)送一個請求到后端去訪問資源,結(jié)果后端發(fā)現(xiàn)這個資源未發(fā)生修改,于是返回304狀態(tài)的報文,告訴瀏覽器這個過期的緩存還可以繼續(xù)使用。
  2. 如何判斷緩存有效呢
    這里存在兩個效果類似的字段:cache-control & Expires。
    • cache-control: HTTP1.1 標(biāo)準(zhǔn),標(biāo)注瀏覽器以何種方式對數(shù)據(jù)進(jìn)行緩存,主要關(guān)注max-age 這個設(shè)置,這個設(shè)置的值是一個相對值(就是一個保質(zhì)期),這個相對值相對于用戶首次拿到這個數(shù)據(jù)的時間。
      315360000s = 10 years


      百度圖標(biāo)
    • Expires:HTTP1.0標(biāo)準(zhǔn)(新標(biāo)準(zhǔn)的優(yōu)先級大于舊標(biāo)準(zhǔn),所以同時有Cache-Control 和 Expires時,優(yōu)先遵循Cache-Control 標(biāo)準(zhǔn)),標(biāo)注的是一個絕對值,即有效日期(生產(chǎn)日期 + 保質(zhì)期)
  1. 如果發(fā)現(xiàn)緩存已經(jīng)失效了呢?
    瀏覽器會去服務(wù)器再去請求資源
    1. 如果服務(wù)器使用cache-control , 則請求失效緩存時,Request Headers要攜帶If-Modified-Since這個字段(等同于Last-Modified),去后端請求,當(dāng)后端資源未修改時,即后端的Last-Modified字段未修改,就返回一個304報文給客戶端瀏覽器,讓瀏覽器繼續(xù)使用這個數(shù)據(jù),這就實(shí)現(xiàn)了協(xié)商緩存。
    2. 如果服務(wù)器使用Expires,Request Headers 就要攜帶If-None-Match字段(等同于Etag,服務(wù)器對資源進(jìn)行hash加密之后得出的字符串),去后端請求,后續(xù)處理同1 。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容