http2新特性

看風景就發表於2017-05-03
1.二進位制分幀
 
http1.x是文字格式傳輸,http2二進位制格式傳輸,並且被切分未過個幀傳送,幀可以根據頭部流標識重新組裝。
 
2. 單一長連線
 
同一個域名使用一個TCP連線,(http1.x 使用6-8個TCP連線,瀏覽器為減少消耗,進行的限制),無論請求多少個資源,能減少握手帶來的延時,減少建立多個TCP連線
帶來的網路開銷,提高吞吐量
 
3. 多路複用
 
http1.x相當於單車道,同一個連線上的請求序列執行
 
http2相當於多車道,同一個連線上的請求可以並行執行。由於請求被二進位制分幀,每個幀都有流編號。同一個請求和響應的幀必須是有序的,不同的請求的幀可以
互相穿插。然後按照流編號重組。
 
4.頭部壓縮
 
用HPACK壓縮頭部,使用首部表來進行首部欄位儲存,只有當首部表中的資料變更或為傳送過時,才會傳送http頭部欄位。
首部表分為靜態表和動態表,靜態表包含常用欄位,動態表包含自定義欄位等非常用欄位,當新增或改變欄位時,會增加或修改動態表中的資料。
 
5.服務端推送
 
客戶端請求資源X,服務端判斷客戶端還需要別的資源,可以主動推送這些資源。客戶端需要顯式允許伺服器啟用推送功能。並且,客戶端可以傳送一個RST_STREAM
幀來中斷推送流,推送受同源策略限制
 
例如,請求index.html頁面時,伺服器同時將index.js和index.css push給瀏覽器,當瀏覽器
解析html到請求index.css和index.js時,可以直接從快取中讀取