HTTP 协议 -- 浏览器缓存机制
生活随笔
收集整理的這篇文章主要介紹了
HTTP 协议 -- 浏览器缓存机制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
瀏覽器緩存機制 瀏覽器緩存機制主要是 HTTP 協議定義的緩存機制。 HTTP 協議中有關緩存的緩存信息頭的關鍵字有 Cache-Control,Pragma,Expires,Last-Modified/ETag 等。 瀏覽器請求流程 瀏覽器第一請求流程: ? 瀏覽器再次請求流程: ETag/If-None-Match 當資源過期時(Cache-Control 中 max-age 設置),發現資源有 ETag 聲明,則再次向服務器請求帶上?If-None-Match (ETag 值)。服務器收到請求后發現頭?If-None-Match,則與被請求資源相應校驗串進行對比,返回 200 或 304 。 Last-Modified/If-Modified-Since 當資源過期時(Cache-Control 中 max-age 設置),發現資源有 Last-Modified 聲明,則再次向服務器請求時帶上?If-Modified-Since,表示請求時間。服務器收到請求后發現頭有?If-Modified-Since ,則與被請求的資源進行最后修改時間進行對比。若最后修改時間較新,說明資源又被改動過,則響應整片資源內容(200);若最后修改時間較舊,說明資源沒有修改,會響應 304,告知瀏覽器繼續使用保存的 cache 。 Last-Modified 和 ETag 區別? ETag 出現是為了解決 Last-Modified 幾個難解決的問題: Last-Modified 標注的資源最后修改時間只能精確到秒級; 若某些文件被定期生成,有時它們內容沒有變化,但是 Last-Modified 卻改變了,這樣導致文件無法使用緩存; 有可能存在服務器沒有準確獲取文件的最后時間,或者與代理服務器時間不一致。 ETag 由服務器自動生成,能根據準確的控制緩存。當 Last-Modified 與 ETag 一起使用時,服務器會優先驗證 ETag。 瀏覽器檢查緩存機制流程 ? 在用戶端,瀏覽器有一系列機制通過緩存來提升頁面加載速度。例如 IE/Chrome 都會緩存 GET 類型的 AJAX 請求,IE 甚至還會緩存 POST 類型的請求,可以通過增加時間戳參數的方式來強制清除緩存。對于所有的靜態資源文件,最佳實踐是為它們增加一個永不過期的長緩存。 Cache-Control 是瀏覽器緩存機制中最重要的一個配置,下面是瀏覽器加載靜態資源文件時緩存檢查機制流程: 從上可以看出,靜態資源優化的最佳狀態是:從本地緩存資源讀取 > 304 狀態 > 200 狀態。 參考文章: 瀏覽器 HTTP 協議緩存機制詳解:http://www.open-open.com/lib/view/open1421744212609.html 瀏覽器緩存機制詳解:http://mangguo.org/browser-cache-mechanism-detailed/ http://www.cnblogs.com/kaiye/p/5030893.html
轉載于:https://www.cnblogs.com/god--love-you/p/6691312.html
總結
以上是生活随笔為你收集整理的HTTP 协议 -- 浏览器缓存机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代码整洁之道,clean code
- 下一篇: 前端开发-DOM