1. 程式人生 > >Web 協議 HTTP1.0 HTTP1.1 SPDY HTTP2.0

Web 協議 HTTP1.0 HTTP1.1 SPDY HTTP2.0

靜態 但是 head 如果 體積 我們 一起 內容 spdy

Web 協議 HTTP1.0 HTTP1.1 SPDY HTTP2.0

HTTP1.0 VS HTTP1.1

長連接
HTTP 1.0需要使用keep-alive參數來告知服務器端要建立一個長連接,而HTTP1.1默認支持長連接。

HTTP是基於TCP/IP協議的,創建一個TCP連接是需要經過三次握手的,有一定的開銷,如果每次通訊都要重新建立連接的話,對性能有影響。因此最好能維持一個長連接,可以用個長連接來發多個請求。

節約帶寬
HTTP 1.1支持只發送header信息(不帶任何body信息),如果服務器認為客戶端有權限請求服務器,則返回100,否則返回401。客戶端如果接受到100,才開始把請求body發送到服務器。

這樣當服務器返回401的時候,客戶端就可以不用發送請求body了,節約了帶寬。

另外HTTP還支持傳送內容的一部分。這樣當客戶端已經有一部分的資源後,只需要跟服務器請求另外的部分資源即可。這是支持文件斷點續傳的基礎。

HOST域
現在可以web server例如tomat,設置虛擬站點是非常常見的,也即是說,web server上的多個虛擬站點可以共享同一個ip和端口。

HTTP1.0是沒有host域的,HTTP1.1才支持這個參


HTTP1.1 VS HTTP2.0

多路復用
HTTP2.0使用了多路復用的技術,做到同一個連接並發處理多個請求,而且並發請求的數量比HTTP1.1大了好幾個數量級。

當然HTTP1.1也可以多建立幾個TCP連接,來支持處理更多並發的請求,但是創建TCP連接本身也是有開銷的。

TCP連接有一個預熱和保護的過程,先檢查數據是否傳送成功,一旦成功過,則慢慢加大傳輸速度。因此對應瞬時並發的連接,服務器的響應就會變慢。所以最好能使用一個建立好的連接,並且這個連接可以支持瞬時並發的請求。

關於多路復用,可以參看學習NIO 。

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

服務器推送
意思是說,當我們對支持HTTP2.0的web server請求數據的時候,服務器會順便把一些客戶端需要的資源一起推送到客戶端,免得客戶端再次創建連接發送請求到服務器端獲取。這種方式非常合適加載靜態資源。

服務器端推送的這些資源其實存在客戶端的某處地方,客戶端直接從本地加載這些資源就可以了,不用走網絡,速度自然是快很多的。


http://www.360doc.com/content/16/0816/07/30578693_583526011.shtml

Web 協議 HTTP1.0 HTTP1.1 SPDY HTTP2.0