緩存類型有四種 disk、memory、service Worker、push cachehtml
push cache 是http2.0的,如今基本是1.1, 就不討論了, service worker前端配置,這裏也不討論前端
緩存又分爲強緩存和協商緩存, 默認狀況下走協商緩存,後端
disk(磁盤)緩存 memory 內存緩存 都屬於強緩存瀏覽器
設置強緩存後, 頁面第一次加載 走的是 disk(磁盤)緩存, 若是刷新頁面就會走 memory(內存)緩存, 固然內存有限不是因此都能從disk(磁盤)緩存走到memory(內存)緩存的.若是memory(內存)滿了,那麼沒進入memory(內存)緩存的仍是從disk(磁盤)拿.緩存
默認緩存, 一次進入頁面向後端請求資源, 若是刷新頁面則和後端資源比對Etag 是否有改變,若是沒有則使用已有資源,若是改變,則從新請求資源htm
html這類文件不建議設置強緩存,就算設置後,瀏覽器第一次進來走disk緩存, 若是手動刷新仍是會走協商緩存內存
設置強緩存就是在 response header 中 配置 Cache-Control資源
我的建議緩存時間設置爲迭代的週期是比較合理的,若是公司一個月迭代一次那就設置一個月,不要說什麼第三方庫基本不更新能夠設置久點,就拿單頁的vendent.js來講,第三包的集合,第三方包是不會改變,你肯定你不會加入新的包,或者刪掉不用的包class
強緩存 => 協商緩存 => 資源請求配置
若是強緩存和協商緩存任何一個有命中就不會往下走