[Note] HTTP
HTTP/1.1
- 效能較差:每一次向伺服器發送請求時,都需要開啟新的 TCP 連線
- 容量較大:Headers 都是以純文字傳送,沒有進行壓縮
- 原始僅支援 Request 和 Response 的機制,Server 無法主動對 client 推送訊息
HTTP/2
HTTP/2 是來自 Google 一開始推出的名為 SPDY
的 專案。
然而,當今的 Web 光是載入一頁就會發送多個 request 來獲取 assets,過去 HTTP/1.1 的傳輸方式到了當今的 Web 已經無法處理得又快又好。
- 效能提升:HTTP/2 支援 multiplexing,也就是 client 和 server 可以在相同的 TCP 連線中以平行處理(parallel)的方式推送訊息,不需要重覆進行 TCP 交握。
- 效能提升:HTTP/2 支援 server push,也就是 client 送出一次 request 後,server 即可透過 stream 的方式向 client 傳輸多個訊息。
- 減少頻寬消耗:可以壓縮 Header 的內容,以減少頻寬流量消耗。
- 減少頻寬消耗:使用 binary 的方式傳輸資料。
- 安全性提升:HTTP/2 只是建議使用 SSL,但瀏覽器會要求開發者使用 SSL / HTTPS。
- 支援帶有不同優先順序的請求(request prioritization),可以讓某些請求是比較重要的(例如、CSS 樣式),某些請求這是權重比較低的(例如,圖片)。
提示
HTTP/2 支援 streaming 的傳輸方式,但並不表示 HTTP/2 一定要用 streaming。
HTTP/3
HTTP/3 目前也是 Google 的專案,又稱作 QUIC
,QUIC 主要是基於 UDP 的協定,處理封包有可能遺失的情況。