HTTP緩存整理

HTTP緩存

做用

再次訪問網頁可以加快用戶訪問速度和節省流量。git

緩存策略

HTTP Cache-Control 標頭定義了緩存策略,定義了在什麼條件下能夠緩存響應,及能夠緩存多久。github

在HTTP/1.1規範定義的,取代了以前同來定義緩存策略的標頭(如Expires)web

緩存條件

no store

不可緩存json

no cache

每次使用緩存都要去服務端確認資源是不是最新的。瀏覽器

能在哪緩存

Public

默認緩存

privite

只能在用戶瀏覽器上緩存,不可在公共緩存上緩存服務器

存多久

MAX-AGE

使用緩存 請求資源時,若無緩存,要從服務端獲取編輯器

是不是最新的

若是是最新的則繼續使用緩存,不然再從服務端請求。 緩存的可用信息都放在 http response headerspa

EXPIRES

標示了過時時間。code

缺點

若是客戶端和服務器時間不一致,文件更新的信息也會有偏差。

http/1.0

LAST-MODIFIED

資源最後更新時間。精確到秒。 客戶端再次請求資源時,會把這個值放在request header If-Modified-Since中,來判斷有無更新。

http/1.0

缺點

若在秒內有更新,則有偏差。

ETAG

返回一個根據文件內容變化的字符串標識,瀏覽器接受後,下一次請求,會在request header 做爲 If-None-Match的值發送,若是etag值沒有變化,則使用緩存。優先級最高。

RESPONSE STATUS

服務器取得最新結果

返回200

直接從本地緩存讀取的資源

返回200

和服務器確認後使用緩存

返回304

存儲位置

瀏覽器會判斷放在memory cache或disk cache中,品牌不一樣會有差別。

如何配置

在服務端配置,可參考github.com/h5bp/server…

參考

Google文檔 HTTP 緩存

補充閱讀

http-cache-headers

http-cache

注意

對於非靜態資源,如獲取用戶信息的json (/user/:id),瀏覽器可能忽視緩存。

本文使用 mdnice 排版

相關文章
相關標籤/搜索