再次訪問網頁可以加快用戶訪問速度和節省流量。git
HTTP Cache-Control 標頭定義了緩存策略,定義了在什麼條件下能夠緩存響應,及能夠緩存多久。github
在HTTP/1.1規範定義的,取代了以前同來定義緩存策略的標頭(如Expires)web
不可緩存json
每次使用緩存都要去服務端確認資源是不是最新的。瀏覽器
默認緩存
只能在用戶瀏覽器上緩存,不可在公共緩存上緩存服務器
使用緩存 請求資源時,若無緩存,要從服務端獲取編輯器
若是是最新的則繼續使用緩存,不然再從服務端請求。 緩存的可用信息都放在 http response header
中spa
標示了過時時間。code
若是客戶端和服務器時間不一致,文件更新的信息也會有偏差。
http/1.0
資源最後更新時間。精確到秒。 客戶端再次請求資源時,會把這個值放在request header If-Modified-Since
中,來判斷有無更新。
http/1.0
若在秒內有更新,則有偏差。
返回一個根據文件內容變化的字符串標識,瀏覽器接受後,下一次請求,會在request header 做爲 If-None-Match的值發送,若是etag值沒有變化,則使用緩存。優先級最高。
返回200
返回200
返回304
瀏覽器會判斷放在memory cache或disk cache中,品牌不一樣會有差別。
在服務端配置,可參考github.com/h5bp/server…
對於非靜態資源,如獲取用戶信息的json (/user/:id
),瀏覽器可能忽視緩存。
本文使用 mdnice 排版