HTTP1.0 HTTP 1.1主要差別
HTTP 1.0需要使用keep-alive參數來告知伺服器端要建立一個長連接配接,而HTTP1.1預設支援長連接配接。
HTTP是基于TCP/IP協定的,建立一個TCP連接配接是需要經過三次握手的,有一定的開銷,如果每次通訊都要重建立立連接配接的話,對性能有影響。是以最好能維持一個長連接配接,可以用個長連接配接來發多個請求。
HTTP 1.1支援隻發送header資訊(不帶任何body資訊),如果伺服器認為用戶端有權限請求伺服器,則傳回100,否則傳回401。用戶端如果接受到100,才開始把請求body發送到伺服器。
這樣當伺服器傳回401的時候,用戶端就可以不用發送請求body了,節約了帶寬。
另外HTTP還支援傳送内容的一部分。這樣當用戶端已經有一部分的資源後,隻需要跟伺服器請求另外的部分資源即可。這是支援檔案斷點續傳的基礎。
現在可以web server例如tomat,設定虛拟站點是非常常見的,也即是說,web server上的多個虛拟站點可以共享同一個ip和端口。
HTTP1.0是沒有host域的,HTTP1.1才支援這個參數。
HTTP1.1 HTTP 2.0主要差別
HTTP2.0使用了多路複用的技術,做到同一個連接配接并發處理多個請求,而且并發請求的數量比HTTP1.1大了好幾個數量級。
當然HTTP1.1也可以多建立幾個TCP連接配接,來支援處理更多并發的請求,但是建立TCP連接配接本身也是有開銷的。
TCP連接配接有一個預熱和保護的過程,先檢查資料是否傳送成功,一旦成功過,則慢慢加大傳輸速度。是以對應瞬時并發的連接配接,伺服器的響應就會變慢。是以最好能使用一個建立好的連接配接,并且這個連接配接可以支援瞬時并發的請求。
意思是說,當我們對支援HTTP2.0的web server請求資料的時候,伺服器會順便把一些用戶端需要的資源一起推送到用戶端,免得用戶端再次建立連接配接發送請求到伺服器端擷取。這種方式非常合适加載靜态資源。
伺服器端推送的這些資源其實存在用戶端的某處地方,用戶端直接從本地加載這些資源就可以了,不用走網絡,速度自然是快很多的。
本文轉自 Taxing祥 51CTO部落格,原文連結:http://blog.51cto.com/12118369/1962662