1. 程式人生 > 其它 >Http1.0、Http1.1、Http2.0區別

Http1.0、Http1.1、Http2.0區別

http1.0特點

http1.0主要用於一些簡單的請求。

每個請求都要建立維護其對應的連線,且請求完之後都會關閉連線(短連線)。

主要通過header中if-modified-since/expires來進行快取控制。

http1.1特點:

http1.1中增加了長連線(即當前請求結束後不關閉連線,後續請求仍可採用此連線進行),主要通過header中的connection屬性(close/keepalive),減少了建立和維護連線的開銷及等待的時間。

http1.1增加了多種狀態碼,比如409表示當前請求的資源與資源的狀態發生衝突;401表示伺服器的某個資源被永久性刪除;100表示初始請求已被接受,客戶端繼續傳送其餘請求;405表示請求的方法錯誤或者不支援;414URI太長;504閘道器請求超時;505表示伺服器不支援請求中指定的HTTP版本等;

http1.1快取管理方面,新加了Etag、if-unmodified-since、if-no-match等快取控制策略;

http1.1中添加了range頭域(可請求伺服器的部分資源),若客戶端只需要獲取某個物件的一部分,則可通過這個屬性控制,伺服器端不會像http1.0一樣將整個物件都返回,減少了頻寬的浪費;

http2.0特點

http2.0協議解析由原來的基於文字協議更改為基於二進位制格式。由於文字型別的多樣化,就要求考慮到各種場景的健壯性問題,而二進位制則方便了很多;

http2.0採用多路複用的方式,多個request請求可以同時共享一個tcp連線,接收方通過request對應的id分配到對應的伺服器端響應處理;

http2.0通過演算法對header進行壓縮,http1.1中header中儲存大量資料且每次請求重複傳送,2.0採用hpack演算法進行壓縮同時對header進行快取,減小了資料傳輸的大小及避免了資料重複傳送;

新增服務端推送功能,客戶端像伺服器端請求某資源,客戶端獲取到資源資料時,伺服器端也將該資原始檔推送到客戶端進行快取,下次可直接從快取中獲取不用重新進行請求;

長連線:當前請求結束後不關閉連線,後續請求仍可使用此連線(多個請求時仍需排隊依次執行,可能會造成阻塞問題);

多路複用:多個請求可以同時共享一個連線,且某個請求出現問題不會造成其它請求阻塞問題。