HTTP1.0 、 HTTP1.1與HTTP2.0的主要區別

HTTP1.0 VS HTTP1.1web

  • 長鏈接:

HTTP1.0須要使用keep-alive參數來告知服務器端要創建一個長鏈接,而HTTP1.1默認支持長鏈接(PersistentConnection)和請求的流水線(Pipelining)處理,在一個TCP鏈接上能夠傳送多個HTTP請求和響應,減小了創建和關閉鏈接的消耗和延遲,在HTTP1.1中默認開啓Connection: keep-alive,必定程度上彌補了HTTP1.0每次請求都要建立鏈接的缺點。算法

  • 緩存:

在HTTP1.0中主要使用header裏的If-Modified-Since,Expires來作爲緩存判斷的標準,HTTP1.1則引入了更多的緩存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供選擇的緩存頭來控制緩存策略
帶寬優化及網絡鏈接的使用:瀏覽器

  • 狀態碼:

在HTTP1.1中新增了24個錯誤狀態響應碼,如409(Conflict)表示請求的資源與資源的當前狀態發生衝突;410(Gone)表示服務器上的某個資源被永久性的刪除緩存

  • 帶寬優化:

HTTP 1.1支持只發送header信息(不帶任何body信息),若是服務器認爲客戶端有權限請求服務器,則返回100,不然返回401。客戶端若是接收到100,纔開始把請求body發送到服務器。
這樣當服務器返回401的時候,客戶端就能夠不用發送請求body了,節約了帶寬。服務器

  • HOST:

Host頭處理,在HTTP1.0中認爲每臺服務器都綁定一個惟一的IP地址,所以,請求消息中的URL並無傳遞主機名(hostname)。但隨着虛擬主機技術的發展,在一臺物理服務器上能夠存在多個虛擬主機(Multi-homed Web Servers),而且它們共享一個IP地址。HTTP1.1的請求消息和響應消息都應支持Host頭域,且請求消息中若是沒有Host頭域會報告一個錯誤(400 Bad Request)。網絡


HTTP1.1 VS HTTP2.0併發

  • 多路複用:

在HTTP/1.1協議中,瀏覽器客戶端在同一時間針對同一域名的請求有必定數據限制。超過限制數目的請求會被阻塞。
HTTP2.0使用了多路複用的技術,作到同一個鏈接併發處理多個請求,並且併發請求的數量比HTTP1.1大了好幾個數量級。
固然HTTP1.1也能夠多創建幾個TCP鏈接,來支持處理更多併發的請求,可是建立TCP鏈接自己也是有開銷的。
TCP鏈接有一個預熱和保護的過程,先檢查數據是否傳送成功,一旦成功過,則慢慢加大傳輸速度。所以對應瞬時併發的鏈接,服務器的響應就會變慢。因此最好能使用一個創建好的鏈接,而且這個鏈接能夠支持瞬時併發的請求。優化

  • 首部壓縮:

HTTP1.1不支持header數據的壓縮,HTTP2.0使用HPACK算法對header的數據進行壓縮,這樣數據體積小了,在網絡上傳輸就會更快。server

  • 服務器推送:

當咱們對支持HTTP2.0的web server請求數據的時候,服務器會順便把一些客戶端須要的資源一塊兒推送到客戶端,省得客戶端再次建立鏈接發送請求到服務器端獲取。這種方式很是合適加載靜態資源。ip

相關文章
相關標籤/搜索