HTTP各個版本的比較

到現在爲止,HTTP協議已經有三個版本了:

  • HTTP1.0
  • HTTP1.1
  • HTTP/2

HTTP1.0和HTTP1.1區別

HTTP1.1新改動:

  • 持久連接
  • 請求管道化
  • 增加緩存處理(新的字段如cache-control)
  • 增加Host字段、支持斷點傳輸等

HTTP1.0和HTTP1.1最主要的區別就是:

  • HTTP1.1默認是持久化連接

在HTTP1.0默認是短連接:

    簡單來說就是每次與服務器交互,都需要新開一個連接!而現在不用再這樣,HTTP1.1中建立一次連接,多次請求均由這個連接完成

HTTP1.1和HTTP2.0比較

HTTP2新改動:

  • 二進制分幀
  • 多路複用
  • 頭部壓縮
  • 服務器推送

多路複用:

             其最重要的就是解決了線頭阻塞的問題!

            多路複用意味着線頭阻塞將不在是一個問題,允許同時通過單一的 HTTP/2 連接發起多重的請求-響應消息,合併多個請求爲一個的優化將不再適用。

 

            HTTP2所有性能增強的核心在於新的二進制分幀層(不再以文本格式來傳輸了),它定義瞭如何封裝http消息並在客戶端與服務器之間傳輸。

           在HTTP/1.x中,用戶想要多個並行的請求來提高性能,但是這樣必須得使用多個TCP連接.這樣的操作是屬於HTTP/1.x 發送模型的直接序列.它能保證在每次連接中在一個時間點只有一個響應被髮送出去.更糟糕的是,它使得隊頭阻塞和重要TCP連接的低效使用.在HTTP/2中,新的二進制幀層,解除了這個限制.使得所有的請求和響應多路複用.通過允許客戶端和服務端把HTTP消息分解成獨立的幀,交錯傳輸,然後在另一端組裝.

 

 

圖12-3顯示了在一次連接中的多個流.客戶端傳輸數據幀到服務端(Stream5).服務端傳輸交錯的幀序列(Stream1,Stream3)到客戶端.此時,同時存在並行的3個流.
能夠把HTTP消息分解成交錯的幀,並在另一端組裝它們是HTTP/2中一個非常重要的提高.事實上,它引起了一種波浪效應使得web技術的全棧在性能上有很大的提升

上面的解釋:

               流:已經建立的連接之間雙向流動的字節,它能攜帶一個至多個消息

               幀:在HTTP/2通信的最小單元。每個楨包括一個幀頭,裏面有個很小標誌,來區別是屬於哪個流。         

  • 所有的通信都建立在一個TCP連接上,可以傳遞大量的雙向流通的流。
  • 每個流都有獨一無二的標誌和優先級。
  • 每個消息都是邏輯上的請求和相應消息。由一個或者多個幀組成。
  • 來自不同流的幀可以通過幀頭的標誌來關聯和組裝起來。

頭部壓縮

        每個HTTP傳輸都包含一組描述傳輸資源及其屬性的標題。在HTTP / 1.x中,此元數據始終以純文本形式發送,並且每次傳輸的開銷都會在任何位置增加500-800字節,如果使用HTTP Cookie,則會增加數千字節。爲了減少這種開銷並提高性能,HTTP / 2使用HPACK壓縮格式來壓縮請求和響應頭元數據:

  • 它允許通過靜態霍夫曼編碼對傳輸的頭部字段進行編碼,從而減少它們各自的傳輸大小。

  • 它要求客戶端和服務器都維護和更新先前看到的標題字段的索引列表(即,建立共享壓縮上下文),然後將其用作參考以高效編碼先前傳輸的值。

服務器推送

HTTP / 2的另一個強大的新功能是服務器爲單個客戶端請求發送多個響應的能力。也就是說,除了對原始請求的響應之外,服務器還可以向客戶端推送額外的資源,而不需要客戶端明確請求每一個資源!

 

HTTP / 2脫離了嚴格的請求 - 響應語義,並支持一對多和服務器啓動的推送工作流程,在瀏覽器內部和外部打開全新的交互可能性。這是一個啓動功能,對於我們如何考慮協議以及在何處以及如何使用協議,都會產生重要的長期影響。

爲什麼我們需要在瀏覽器中使用這種機制?一個典型的Web應用程序由幾十個資源組成,所有這些資源都是客戶端通過檢查服務器提供的文檔發現的。因此,爲什麼不消除額外的延遲並讓服務器提前推送相關資源?服務器已經知道客戶端需要哪些資源;這是服務器推動。
我們將該資源推送到客戶端,而無需等待客戶端請求。通過HTTP / 2,我們可以獲得相同的結果,但是具有額外的性能優勢:

  • 推送的資源可以由客戶端緩存

  • 推送的資源可以在不同的頁面上重複使用

  • 推送的資源可以與其他資源一起復用

  • 推送的資源可以由服務器優先

  • 推送的資源可以被客戶拒絕

每個推送的資源都是一個流,它允許客戶端對其進行單獨複用,優先化和處理。由瀏覽器執行的唯一安全限制是推送資源必須遵守同源策略:服務器必須對提供的內容具有權限。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章