這是我參與8月更文挑戰的第4天,活動詳情查看:8月更文挑戰瀏覽器
網絡層面的性能優化,使用緩存是一個最直接有效的方案。使用緩存能夠減小網絡 IO 消耗,提升訪問速度,效果顯著。所以,認識一下瀏覽器的緩存機制頗有必要。緩存
上圖 Network 面板的截圖中,咱們能夠看到 size 列能夠看到緩存的獲取來源。性能優化
瀏覽器緩存機制有四個方面,它們按請求的優先級依次排列以下:服務器
Chrome 官方的緩存決策流程圖markdown
其中,HTTP 緩存是最主要、最具表明性的緩存策略,咱們先來認識一下這位 HTTP 緩存機制。網絡
HTTP緩存又分爲強緩存和協商緩存,強緩存優先級高於協商緩存,資源沒有命中強緩存,纔會走協商緩存。post
Cache-Control
中配置 max-age
,max-age
設定的是相對時間長度,表示在時間長度內有效。從而規避 expires 的時差問題。Cache-Control
的 max-age
優先級高於 expires
max-age
能夠視做是對 expires
的補位/替換,但若是有向下兼容的訴求,expires
仍是要的。實現性能
Last-Modified
(時間戳)返回If-Modified-Since
,值爲首次請求時的 Last-Modified
的值If-Modified-Since
和資源的最後修改時間是否一致
Last-Modified
問題
Last-Modified 存在一些弊端,優化
對於上面兩種場景,Last-Modified 沒法正確判斷資源是否變化。spa
爲了解決上述問題,Etag 做爲 Last-Modified 的補充出現了。
ETag
返回if-None-Match
(值爲ETag
的值)弊端: Etag 生成過程須要服務器額外付出開銷,影響服務端性能。