相關的文章多是英文,少數的幾篇中文文章讓我懷疑我是不是該重學中文...
整理一下網路上查到的一些資料。(複製貼上居多)
透過chrome的開發者工具,在network tab勾選Protocol可以查看請求是使用哪種協定。
這篇只純粹簡單整理HTTP/2相較於HTTP/1的幾個優點。
1. 與 HTTP/1.x 的許多標準相容
Ex. methods, status codes, URIs and header fields
2. Multiplexing(多路複用/複用/多工)
在HTTP/1.1 協議中,client在同一時間,針對同一域名下的請求有限制,當一個 request 下載的內容過大時,會阻塞其他 request 。
而 HTTP/2允許 client 透過同一個 TCP connection 同步發送多個 requests 給 server,server 也允許 client 從同一個 TCP connection 異步下載檔案,進而減少額外的往返時間(RTT, round trip time)。
3. Header Compression
HTTP/1 由於資安問題,禁用Header Compression。
HTTP/2 利用 HPACK 進行壓縮(已知可大幅降低資安犯罪機會),將大量重複的 Header key:value 壓縮成 1 ~ 2 bytes,節省流量。
HPACK基本原理
使用靜態索引表和動態索引表來把頭部映射到索引值(key:value),並對沒找到的頭部使用huffman 編碼,並動態緩存到索引,從而達到壓縮頭部的效果。
4. Binary Protocol 二進位協定
HTTP/2 在傳輸時是 Binary 。
HTTP/1.1,使用 Text Protocol,為了正確處理純文字的 parsing(換行、空行、空白等等都是需要特別處理),定義了四種方法,而在 HTTP/2 中只需要一種處理方式。
5. HTTP/2 Server Push
傳統 HTTP/1.x ,server 要等到 client 的 request 才會做出 response。
而 Server Push 允許 server 在 client 提出後續請求之前,主動將這些已知會被接著請求的檔案推送給 client。
這樣的功能減少解析數據(request)的開銷,並且降低網路的延遲。
參考文章
HTTP/2: the difference between HTTP/1.1, benefits and how to use it