1. 程式人生 > >http 中的緩存

http 中的緩存

文件 就是 expires o-c 過程 mat 時間 比較 判斷

如何判斷緩存新鮮度

  • If-Modified-Since告訴服務器, 在服務器中的響應報文中有一個Last-Modified字段, 如果兩者一直則表示在瀏覽器中緩存的文件是最新的, 可以直接使用瀏覽器緩存中的副本
  • If-None-Match字段告訴服務器, 它的值為ETag的id號, 如果服務器端的Etag的id號與這個字段一直則使用緩存中的數據, 返回304

在request中有關cache的字段

  • Cache-Control: no-cache 不使用緩存
  • If-Modified-Since
  • If-None-Match
  • Cache-Control: max-age, 緩存文件在瀏覽器端緩存的時間

response中有關cache的字段

  • Cache-Control: public, 公有緩存
  • Cache-Control: private, 私有緩存
  • Cache-Control: no-store, 禁止使用緩存
  • Date: 響應發送的時間
  • Expires: 緩存失效的時間
  • Last-Modified: 服務器端文件的最後修改時間
  • ETag: "67adsfaf908", 和request中的If-None-Match進行比較, 如果一樣則讓瀏覽器直接使用放在緩存中的數據

註意

  • 對於緩存有效的判斷, 先根據Cache-Control中的max-age判斷, 如果沒有這個key-value則通過Expires進行判斷

304響應過程

  • 瀏覽器發送request給服務器 -> 瀏覽器先檢查在本地緩存中是否已經有了這個資源 -> 如果有了則獲取其中的If-Modified-Since, 構成響應報文, 發送給服務器端 -> 服務器端通過If-Modified-Since和響應的Last-Modified的值進行比較, 如果一致則表示在瀏覽器中緩存的數據就是最新的數據, 於是服務器發送304狀態碼的響應 -> 瀏覽器從本地緩存中獲取資源

http 中的緩存