Cache-Control 與 Expires 做用一致,都是指當前資源的有效期,控制瀏覽器是否直接從瀏覽器獲取數據仍是從新發送請求到服務器取數據。Cache-Control 的選擇更多,設置更細緻,若是同時存在的話,優先級高於 Expires。html
配置 Last-Modified/ETag 的狀況下,瀏覽器再次訪問統一 URI 的資源,仍是會發送請求到服務器詢問文件是否已經修改,若是沒有,服務器會只返回狀態碼 304 回給瀏覽器,表明資源沒有變化,告訴瀏覽器直接讀取緩存數據。Cache-Control/Expires 不一樣,若是檢測到本地的緩存仍是有效的時間範圍內,瀏覽器直接使用本地副本,不會發送任何請求。二者一塊兒使用時,Cache-Control/Expires的優先級要高於Last-Modified/ETag。即當本地副本根據Cache-Control/Expires發現還在有效期內時,則不會再次發送請求去服務器詢問修改時間(Last-Modified)或實體標識(Etag)了。瀏覽器
Etag 是服務器自動生成或者由開發者生成的對應資源在服務器端的惟一標識符,可以更加準確的控制緩存。Last-Modified 與 ETag 是能夠一塊兒使用的,服務器會優先驗證 ETag,一致的狀況下,纔會繼續比對 Last-Modified,最後才決定是否返回304。緩存