HTTP cache in depth


HTTP cache in depth

HTTP 緩存

https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=zh-CN

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Caching_FAQ

強緩存 200

  1. Expires (HTTP/1.0) ?

  2. Cache-Control (HTTP/1.1)

max-age
s-maxage
public/ private

優先級

協商緩存 304

ETag

last-modified


瀏覽器緩存 / web 緩存

  1. Memory Cache
  2. Service Worker
  3. HTTP cache
  4. Application Cache API (已棄用⚠️)

...

memory cache

200

cache-control / ETag

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9

https://github.com/h5bp/server-configs

http://httparchive.org/trends.php#maxage0

PWA

cookie

LocalStorage

SessionStorage

IndexedDB

Web SQL (已棄用⚠️,停止維護,支持者太少了,sqlite)

https://developers.google.com/web/tools/chrome-devtools/storage/applicationcache

https://html.spec.whatwg.org/multipage/offline.html#offline

https://developers.google.com/web/tools/chrome-devtools/storage/websql

https://www.w3.org/TR/webdatabase/#status-of-this-document

https://www.sqlite.org/


HTTP/1.1 HTTP/2 HTTP/3 (QUIC)

  1. 多路復用

http cache 緩存的位置

https://segmentfault.com/a/1190000020086923

從緩存位置上來看,分為4種,從上往下依次檢查是否命中,如果但都沒有命中則重新發起請求。

Service Worker 是運行在瀏覽器背后的獨立線程,一般可以用來實現緩存功能。
使用 Service Worker的話,傳輸協議必須為 HTTPS。

Memory Cache 也就是內存中的緩存,主要包含的是當前中頁面中已經抓取到的資源,例如頁面上已經下載的樣式、腳本、圖片等。讀取內存中的數據肯定比磁盤快,內存緩存雖然讀取高效,可是緩存持續性很短,會隨着進程的釋放而釋放。
一旦我們關閉 Tab 頁面,內存中的緩存也就被釋放了。
內存緩存中有一塊重要的緩存資源是preloader相關指令(例如)下載的資源。
它可以一邊解析js/css文件,一邊網絡請求下一個資源。

Disk Cache 也就是存儲在硬盤中的緩存,讀取速度慢點,但是什么都能存儲到磁盤中,比之 Memory Cache 勝在容量和存儲時效性上。
絕大部分的緩存都來自Disk Cache,在HTTP 的協議頭中設置。

Push Cache(推送緩存)是 HTTP/2 中的內容,當以上三種緩存都沒有命中時,它才會被使用。
它只在會話(Session)中存在,一旦會話結束就被釋放,並且緩存時



©xgqfrms 2012-2020

www.cnblogs.com 發布文章使用:只允許注冊用戶才可以訪問!



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM