HTTP 2.0與HTTP 1.1區別

一、什麼是HTTP 2.0

HTTP/2(超文本傳輸協議第2版,最初命名爲HTTP 2.0),是HTTP協議的的第二個主要版本,使用於萬維網。HTTP/2是HTTP協議自1999年HTTP 1.1發佈後的首個更新,主要基於SPDY協議(是Google開發的基於TCP的應用層協議,用以最小化網絡延遲,提高網絡速度,優化用戶的網絡使用體驗)。html

 

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

  1. HTTP/2採用二進制格式而非文本格式
  2. HTTP/2是徹底多路複用的,而非有序並阻塞的——只需一個鏈接便可實現並行
  3. 使用報頭壓縮,HTTP/2下降了開銷
  4. HTTP/2讓服務器能夠將響應主動「推送」到客戶端緩存中

 

三、HTTP/2爲何是二進制?

比起像HTTP/1.x這樣的文本協議,二進制協議解析起來更高效、「線上」更緊湊,更重要的是錯誤更少。瀏覽器

 

四、爲何 HTTP/2 須要多路傳輸?

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

緩存

五、消息頭爲何須要壓縮?

假定一個頁面有80個資源須要加載(這個數量對於今天的Web而言仍是挺保守的), 而每一次請求都有1400字節的消息頭(着一樣也並很多見,由於Cookie和引用等東西的存在), 至少要7到8個來回去「在線」得到這些消息頭。這還不包括響應時間——那只是從客戶端那裏獲取到它們所花的時間而已。這全都因爲TCP的慢啓動機制,它會基於對已知有多少個包,來肯定還要來回去獲取哪些包 – 這很明顯的限制了最初的幾個來回能夠發送的數據包的數量。相比之下,即便是頭部輕微的壓縮也能夠是讓那些請求只需一個來回就能搞定——有時候甚至一個包就能夠了。這種開銷是能夠被節省下來的,特別是當你考慮移動客戶端應用的時候,即便是良好條件下,通常也會看到幾百毫秒的來回延遲。

服務器

六、服務器推送的好處是什麼?

當瀏覽器請求一個網頁時,服務器將會發回HTML,在服務器開始發送JavaScript、圖片和CSS前,服務器須要等待瀏覽器解析HTML和發送全部內嵌資源的請求。服務器推送服務經過「推送」那些它認爲客戶端將會須要的內容到客戶端的緩存中,以此來避免往返的延遲。網絡

 

七、參考資料

    1. 維基百科-HTTP/2
    2. InfoQ-HTTP/2規範發佈獲批
    3. HTTP/2 常見問題回答
相關文章
相關標籤/搜索