Skip to content

Instantly share code, notes, and snippets.

@hieven

hieven/blog.md Secret

Last active August 7, 2019 21:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hieven/91ca88f41e88b6d1d2f95474c86e84e1 to your computer and use it in GitHub Desktop.
Save hieven/91ca88f41e88b6d1d2f95474c86e84e1 to your computer and use it in GitHub Desktop.

HTTP 2

#writing/http2

介紹 HTTP 演進歷史

HTTP 2 優缺點

優點

  • 與 HTTP/1.1 的 method / status code 高度相容
  • Web page 讀取速度提升
  • Request header 壓縮
  • Binary 協定
  • HTTP/2 Server Push
  • TCP 多路複用
  • Request pipeline
  • HOL blocking

Request Multiplexing 多路複用

允許 client 透過同一個 TCP connection 同步發送多個 requests 給 server 加快 web file 下載速度進而減少額外的 RTT (round trip time) 此外,大部分的 web server 都會限制一台主機只能接收多少個 TCP connection

Header compression 頭部壓縮

HTTP/2 利用 HPACK 標準進行壓縮 HPACK 透過 1. 靜態字典 2. 動態字典 3. 霍夫曼編碼 三種方式,將大量重複的 Header key:value 壓縮成 1 ~ 2 bytes

Binary Protocol 二進位協定

傳統的 HTTP/1.x 將 request 直接用文字的方式傳送,而 HTTP/2 會在發送 request 前將文字壓縮成二進位。

  1. 二進位的 parsing 遠比純文字的 parsing 更有效率
  2. 實作上比較容易
  3. 減少網路延遲,增加 throughput

HTTP/2 Server Push 伺服器推送

以一般的 web 為例,傳統 HTTP/1.x 要再 browser 收到 HTML 之後,再根據上面指定的網址去索取對應的 CSS 跟 JavaScript,增加使用者等待的時間 而透過 Server Push,server 可以在 client 提出後續請求之前,主動將這些已知會被接著請求的檔案推送給 client,加速整個過程

HTTP 2 在各大 browser 的支援度

用 Node.js 使用 HTTP 2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment