HTTP/2.0

TCP 作為傳輸層 ,使用 SPDY 協議,由 Google 提出

單一網路連線

原名 Single TCP connection,解決建立連接的消耗。

連線多工(Multiplexing)

最主要的修改就是 連線多工(Multiplexing),採用二進制分幀 (Binary Framing) 處理,

單一TCP連接可以同時傳輸多個請求/回應,可並行傳輸

其原理是將請求/回應拆成多個iframe處理,也不會發生佔用連線的問題。

何時關閉:(1) 用戶離開頁面、(2) Server主動關閉

Header 壓縮

Header 壓縮,使用了 HPACK 技術,需要在瀏覽器與伺服器端皆支持的情況下:

  1. 維持一份相同的靜態字典(Static table),包含常見標頭。

  2. 維持一份相同的動態字典(Dynamic table),可動態添加。

  3. 支持基於靜態哈夫曼碼表的哈夫曼編碼(Huffman Coding)。

儲存之前使用過重複的標頭,減少相同的流量消耗。

circle-info

壓縮後,依然存在 TCP Header阻塞問題(HOLB),但相對優化了。

伺服器推送 (Server Push)

允許除了HTML畫面之外,連同需要的 CSS、Javascript、Img 推送到瀏覽器快取中,

但有以下考量:

  1. 需要額外描述哪些需要推送。

  2. 伺服器端不管瀏覽器是否存在都會推送,造成頻寬浪費。

  3. 只要session終止,資源就會被刪除。

  4. 仍遵守同源政策,且必須雙方皆確認。

優先權設計(Prioritization)

可選功能,伺服器端可決定css 或 javascript 優先傳送順序。

HTTP/2 預設埠號: 443,與HTTPS 相同,但未要求必定要 SSL 憑證。

若連線有丟包問題,HTTP 1的效率可能會高於 HTTP2。

Last updated