一直聽說HTTP2.0,對此也僅僅是耳聞,沒有具體研讀過,這次正好有兩個篇章,分别講HTTP1.1和HTTP2.0。
兩者還能好好對比一下,兩者之間的巨大差別,以及HTTP2.0解決了哪些實際問題。
無論什麼網絡,也不管所用網絡協定是什麼版本,所有應用都應該緻力于消除或減少不必要的網絡延遲,将需要傳輸的資料壓縮至最少。
HTTP2.0就是為了做這些優化而出現的。
1)持久連接配接
每個TCP連接配接開始都有三次握手,要經曆一次用戶端與伺服器間完整的往返,而開啟了持久化連接配接就能不必每次都要握手。

在連接配接中有這個屬性的就是打開了持久化連接配接。下圖展示了通過持久 TCP 連接配接取得 HTML 和 CSS 檔案:
2)HTTP管道
持久HTTP多次請求必須嚴格滿足先進先出(FIFO)的隊列順序:發送請求,等待響應完成,再發送用戶端隊列中的下一個請求。
HTTP管道可以讓我們把FIFO隊列從用戶端(請求隊列)遷移到伺服器(響應隊列)。
這樣的話在第一個請求完成後,能馬上開始處理第二個請求。
但HTTP 1.x不允許一個連接配接上的多個響應資料交錯到達(多路複用),因而一個響應必須完全傳回後,下一個響應才會開始傳輸。
也就是說即使用戶端同時發送了兩個請求,而且CSS資源先準備就緒,伺服器也會先發送HTML響應,然後再傳遞CSS。
而HTTP2.0就可以多路複用,并可以按優先級傳回響應。
3)度量和控制協定開銷
HTTP 1.0增加了請求和響應首部,以便雙方能夠交換有關請求和響應的元資訊。
很少改變的接收和傳輸首部、緩存指令、cookie等,所有這些未經壓縮的HTTP中繼資料經常會給每個HTTP請求增加幾千位元組的協定開銷。
而在HTTP2.0中可以首部壓縮,減少上面的開銷提升性能。
4)連接配接與拼合
快的請求是不用請求,減少請求次數總是最好的性能優化手段。
HTTP 1.x中,可以考慮把多個資源捆綁打包到一塊,通過一次網絡請求擷取。
而在HTTP2.0中可以多向請求和響應,消除了請求多個資源就要使用多個TCP連接配接的限制。
5)嵌入資源
把資源嵌入文檔可以減少請求的次數。
比如,JavaScript和CSS代碼,通過适當的script和style塊可以直接放在頁面中。
而圖檔甚至音頻或PDF檔案,都可以通過資料URI(data:[mediatype][;base64],data)的方式嵌入到頁面中。
而在HTTP2.0中有個伺服器推送,與嵌入資源唯一的不同就是可以把這個過程從應用中拿出來,放到HTTP協定本身來實作。
1)二進制分幀層
HTTP 2.0性能增強的核心,全在于新增的二進制分幀層,它定義了如何封裝HTTP消息并在用戶端與伺服器之間傳輸。
接下來說的幾個特點都是基于這個機制來實作的。
2)流、消息和幀
所有HTTP 2.0通信都在一個連接配接上完成,這個連接配接可以承載任意數量的雙向資料流。
每個資料流以消息的形式發送,而消息由一或多個幀組成,這些幀可以亂序發送,然後再根據每個幀首部的流辨別符重新組裝。
簡言之,HTTP 2.0把HTTP協定通信的基本機關縮小為一個一個的幀,這些幀對應着邏輯流中的消息。
相應地,很多流可以并行地在同一個TCP連接配接上交換消息。
3)多向請求與響應
在HTTP 1.x中,如果用戶端想發送多個并行的請求以及改進性能,那麼必須使用多個TCP連接配接。
HTTP 2.0中的二進制分幀層突破了限制:用戶端和伺服器可以把HTTP消息分解為互不依賴的幀,然後亂序發送,最後再在另一端把它們重新組合起來。
4)請求優先級
把HTTP消息分解為很多獨立的幀之後,就可以通過優化這些幀的交錯和傳輸順序,進一步提升性能。
為了做到這一點,每個流都可以帶有一個31比特的優先值。
如果伺服器不理睬優先值,可能導緻應用響應變慢:浏覽器明明在等關鍵的CSS和JavaScript,伺服器卻在發送圖檔,進而造成渲染阻塞。
5)每個來源一個連接配接
大多數HTTP連接配接的時間都很短,而且是突發性的,但TCP隻在長時間連接配接傳輸大塊資料時效率才最高。
HTTP 2.0通過讓所有資料流共用同一個連接配接,可以更有效地使用TCP連接配接。
HTTP 2.0不僅能夠減少網絡延遲,還有助于提高吞吐量和降低營運成本!
6)伺服器推送
伺服器除了對最初請求的響應外,伺服器還可以額外向用戶端推送資源,而無需用戶端明确地請求。
7)首部壓縮
在HTTP1.x中,首部中繼資料都是以純文字形式發送的,通常會給每個請求增加500~800位元組的負荷。
為減少這些開銷并提升性能,HTTP 2.0會壓縮首部中繼資料。
HTTP 2.0連接配接的兩端都知道已經發送了哪些首部,這些首部的值是什麼,進而可以針對之前的資料隻編碼發送差異資料。
本文轉自 咖啡機(K.F.J) 部落格園部落格,原文連結:http://www.cnblogs.com/strick/p/5658280.html,如需轉載請自行聯系原作者