HTTP 2.0與HTTP 1.1區別

FrankYou發表於2016-12-08

1、什麼是HTTP 2.0

HTTP/2(超文字傳輸協議第2版,最初命名為HTTP 2.0),是HTTP協議的的第二個主要版本,使用於全球資訊網。HTTP/2是HTTP協議自1999年HTTP 1.1釋出後的首個更新,主要基於SPDY協議(是Google開發的基於TCP的應用層協議,用以最小化網路延遲,提升網路速度,優化使用者的網路使用體驗)。

 

2、與HTTP 1.1相比,主要區別包括

  1. HTTP/2採用二進位制格式而非文字格式
  2. HTTP/2是完全多路複用的,而非有序並阻塞的——只需一個連線即可實現並行
  3. 使用報頭壓縮,HTTP/2降低了開銷
  4. HTTP/2讓伺服器可以將響應主動“推送”到客戶端快取中

 

3、HTTP/2為什麼是二進位制?

比起像HTTP/1.x這樣的文字協議,二進位制協議解析起來更高效、“線上”更緊湊,更重要的是錯誤更少。

 

4、為什麼 HTTP/2 需要多路傳輸?

HTTP/1.x 有個問題叫線端阻塞(head-of-line blocking), 它是指一個連線(connection)一次只提交一個請求的效率比較高, 多了就會變慢。 HTTP/1.1 試過用流水線(pipelining)來解決這個問題, 但是效果並不理想(資料量較大或者速度較慢的響應, 會阻礙排在他後面的請求). 此外, 由於網路媒介(intermediary )和伺服器不能很好的支援流水線, 導致部署起來困難重重。而多路傳輸(Multiplexing)能很好的解決這些問題, 因為它能同時處理多個訊息的請求和響應; 甚至可以在傳輸過程中將一個訊息跟另外一個摻雜在一起。所以客戶端只需要一個連線就能載入一個頁面

5、訊息頭為什麼需要壓縮?

假定一個頁面有80個資源需要載入(這個數量對於今天的Web而言還是挺保守的), 而每一次請求都有1400位元組的訊息頭(著同樣也並不少見,因為Cookie和引用等東西的存在), 至少要7到8個來回去“線上”獲得這些訊息頭。這還不包括響應時間——那只是從客戶端那裡獲取到它們所花的時間而已。這全都由於TCP的慢啟動機制,它會基於對已知有多少個包,來確定還要來回去獲取哪些包 – 這很明顯的限制了最初的幾個來回可以傳送的資料包的數量。相比之下,即使是頭部輕微的壓縮也可以是讓那些請求只需一個來回就能搞定——有時候甚至一個包就可以了。這種開銷是可以被節省下來的,特別是當你考慮移動客戶端應用的時候,即使是良好條件下,一般也會看到幾百毫秒的來回延遲。

6、伺服器推送的好處是什麼?

當瀏覽器請求一個網頁時,伺服器將會發回HTML,在伺服器開始傳送JavaScript、圖片和CSS前,伺服器需要等待瀏覽器解析HTML和傳送所有內嵌資源的請求。伺服器推送服務通過“推送”那些它認為客戶端將會需要的內容到客戶端的快取中,以此來避免往返的延遲。

 

7、參考資料

    1. 維基百科-HTTP/2
    2. InfoQ-HTTP/2規範釋出獲批
    3. HTTP/2 常見問題回答

相關文章