HTTP/1问题和HTTP/2解决思路
古老的HTTP/1
HTTP起源于1991年發明的HTTP/0.9。該協議最初是為一個更簡單的電子文檔Web而設計的,只能使用單一方法(GET)。這些用HTML編寫的文檔能夠通過錨點標簽鏈接到其他文檔。HTTP/0.9協議能夠很好的實現這一目標。
隨著時間的推移,人們添加了兩個具有額外功能和方法(例如提交表單數據的POST)的HTTP新實現。其版本號是v1.0好v1.1,他們在1996年標準化,從那時起,HTTP/1就成了Web的主力軍。
然而接下來,隨著Web技術的演進,Web從提供簡單的HTML文檔轉變成提供復雜的網站和應用程序。這樣,逐漸HTTP/1協議就不能滿足要求了。
HTTP/1協議問題
HTTP/1協議有如下幾個問題:
隊首阻塞
HTTP/1協議無法同時處理超過一小批請求(通常一次處理6個請求)。請求按接收順序響應,在初始批處理中所有請求完成之前,無法開始下載內容的新請求。
未壓縮頭部
使用HTTP/1協議時服務器只能壓縮響應體,而不能壓縮響應頭。
不安全問題
HTTP/1協議使得服務器不需要為其訪問者實現SSL。
HTTP/2協議
不再有隊頭阻塞
HTTP/2使用連接處理多個并行請求的方式來解決隊頭阻塞的問題。連接由以下層次結構中的組件構成:
-
流(stream)是服務器和瀏覽器之間的雙向通信協議
單個流由對服務器的請求和來自服務器的響應組成。因為流是連續封裝的,所以可以使用多個流,在同一連接中并行下載多個資源。 -
消息(message)由流封裝
單個消息大致相當于對服務器的一個HTTP/1請求或來自服務器的一個響應,提供了請求資源和從Web服務器接收資源內容所需的機制。 -
幀(frame)由消息封裝
幀是消息中的分隔符,表明后面的數據類型。例如,響應消息中的HEADERS幀表明以下數據表示響應的HTTP頭。響應消息中的DATA幀表明是請求資源的內容。
頭部壓縮
HTTP/2引入了一個名為HPACK的壓縮算法來解決這個問題。HPACK不僅壓縮頭部數據,還通過創建一個表來存儲重復頭部,以刪除多余頭部。
確保HTTPS
支持HTTP/2的瀏覽器實際上要求通過HTTP/2進行的任何通信都必須是安全的。
參考資料
[1] 《Web性能實戰》
總結
以上是生活随笔為你收集整理的HTTP/1问题和HTTP/2解决思路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 性能优化:实现动画效果优先考虑css的t
- 下一篇: CSS实现三道杠