總結
- 二進制協議:文本通信改為二進制幀通信,數據可以劃分為更小的幀,便于高效解析和傳輸。
- 多路復用:廢除 pipeline 管道,避免了“隊頭阻塞”問題。允許同一個 TCP 連接同時發送多個請求和協議,提高網絡資源利用率和頁面加載速度。
- 頭部信息壓縮
- 服務端主動推送
- 數據流
詳細說一下 HTTP/2 的特點
HTTP/2 是 HTTP 協議的第二個主要版本,基于 Google 的 SPDY 協議發展而來,旨在解決 HTTP/1.1 中存在的性能瓶頸。HTTP/2 在協議層面進行了多項優化,顯著提升了網頁加載速度和網絡資源利用率。
1. 二進制分幀協議(Binary Protocol)
- 描述:HTTP/2 將原本 HTTP/1.x 中的文本格式通信改為**二進制幀(Frame)**通信。
- 作用:
- 數據被劃分為更小的幀(frame),便于高效解析和傳輸。
- 每個幀都有明確的類型和流標識符,支持多路復用。
- 優勢:
- 更易于解析,減少解析錯誤。
- 提高了協議的可擴展性和性能。
2. 多路復用(Multiplexing)
- 描述:HTTP/2 允許在同一個 TCP 連接上并發發送多個請求和響應。
- 與 pipeline 的區別:
- HTTP/1.1 的 pipeline 仍存在“隊頭阻塞”問題(Head-of-line blocking)。
- HTTP/2 完全避免了該問題,多個請求可以獨立處理、響應。
- 優勢:
- 減少連接數。
- 顯著提升頁面加載速度,尤其是資源較多的頁面。
3. 首部壓縮(Header Compression)
- 描述:HTTP/2 使用
HPACK
算法對請求和響應頭進行壓縮。 - 作用:
- 減少重復頭部信息帶來的冗余流量。
- 支持上下文感知的壓縮機制。
- 優勢:
- 減少帶寬占用。
- 加快數據傳輸速度。
4. 服務器推送(Server Push)
- 描述:服務器可以在客戶端未主動請求時,提前將資源推送到客戶端緩存中。
- 應用場景:
- 頁面中引用的 CSS、JS 文件。
- 圖片等靜態資源。
- 優勢:
- 減少往返次數(RTT)。
- 提前加載關鍵資源,加快頁面渲染。
5. 數據流(Streams)
- 描述:HTTP/2 引入“流”的概念,每個請求/響應對應一個獨立的數據流。
- 特性:
- 每個流有唯一 ID。
- 支持優先級設置,瀏覽器可指定哪些資源優先加載。
- 優勢:
- 更細粒度地控制資源加載順序。
- 提升用戶體驗。
6. 基于 TLS(通常為 HTTPS)
- 描述:雖然不是強制要求,但主流實現中 HTTP/2 通常運行在 TLS(加密通道)之上。
- 優勢:
- 提供安全性保障。
- 被主流瀏覽器廣泛支持。
總結對比表
特性 | HTTP/1.1 | HTTP/2 |
---|---|---|
通信格式 | 文本 | 二進制幀 |
并發請求 | 隊頭阻塞 | 多路復用,無隊頭阻塞 |
首部壓縮 | 無 | 使用 HPACK 壓縮 |
服務器推送 | 不支持 | 支持 |
數據流 | 無 | 支持流和優先級 |
連接數量 | 多個并發連接 | 單個連接即可完成所有請求 |
安全性 | 可選 | 通常基于 HTTPS |