在HTTP/1.x中,用戶想要多個並行的請求來提升性能,可是這樣必須得使用多個TCP鏈接。這樣的操做是屬於HTTP/1.x 發送模型的直接序列,它能保證在每次鏈接中在一個時間點只有一個響應被髮送出去,更糟糕的是,它使得隊頭阻塞和重要TCP鏈接的低效使用。在HTTP/2中,新的二進制幀層解除了這個限制,使得全部的請求和響應多路複用。經過容許客戶端和服務端把HTTP消息分解成獨立的幀,交錯傳輸,而後在另外一端組裝。html
HTTP / 2的另外一個強大的新功能是服務器爲單個客戶端請求發送多個響應的能力。也就是說,除了對原始請求的響應以外,服務器還能夠向客戶端推送額外的資源(圖12-5),而不須要客戶端明確請求每個資源!算法
每一個HTTP傳輸都包含一組描述傳輸資源及其屬性的標題。在HTTP / 1.x中,此元數據始終以純文本形式發送,而且每次傳輸的開銷都會在任何位置增長500-800字節,若是使用HTTP Cookie,則會增長數千字節。爲了減小這種開銷並提升性能,HTTP / 2使用兩種簡單但強大的技術使用HPACK壓縮格式(要了解這個算法,能夠參考這篇文章https://imququ.com/post/header-compression-in-http2.html)來壓縮請求和響應頭元數據。服務器