HTTP1.0 HTTP 1.1 HTTP 2.0主要區(qū)別

轉(zhuǎn): HTTP1.0 HTTP 1.1 HTTP 2.0主要區(qū)別

長(zhǎng)連接


HTTP 1.0需要使用keep-alive參數(shù)來告知服務(wù)器端要建立一個(gè)長(zhǎng)連接,而HTTP1.1默認(rèn)支持長(zhǎng)連接。

HTTP是基于TCP/IP協(xié)議的,創(chuàng)建一個(gè)TCP連接是需要經(jīng)過三次握手的,有一定的開銷,如果每次通訊都要重新建立連接的話,對(duì)性能有影響。因此最好能維持一個(gè)長(zhǎng)連接,可以用個(gè)長(zhǎng)連接來發(fā)多個(gè)請(qǐng)求。


節(jié)約帶寬


HTTP 1.1支持只發(fā)送header信息(不帶任何body信息),如果服務(wù)器認(rèn)為客戶端有權(quán)限請(qǐng)求服務(wù)器,則返回100,否則返回401??蛻舳巳绻邮艿?00,才開始把請(qǐng)求body發(fā)送到服務(wù)器。

這樣當(dāng)服務(wù)器返回401的時(shí)候,客戶端就可以不用發(fā)送請(qǐng)求body了,節(jié)約了帶寬。

另外HTTP還支持傳送內(nèi)容的一部分。這樣當(dāng)客戶端已經(jīng)有一部分的資源后,只需要跟服務(wù)器請(qǐng)求另外的部分資源即可。這是支持文件斷點(diǎn)續(xù)傳的基礎(chǔ)。


HOST域


現(xiàn)在可以web server例如tomat,設(shè)置虛擬站點(diǎn)是非常常見的,也即是說,web server上的多個(gè)虛擬站點(diǎn)可以共享同一個(gè)ip和端口。

HTTP1.0是沒有host域的,HTTP1.1才支持這個(gè)參數(shù)。


HTTP1.1 HTTP 2.0主要區(qū)別


多路復(fù)用


HTTP2.0使用了多路復(fù)用的技術(shù),做到同一個(gè)連接并發(fā)處理多個(gè)請(qǐng)求,而且并發(fā)請(qǐng)求的數(shù)量比HTTP1.1大了好幾個(gè)數(shù)量級(jí)。

當(dāng)然HTTP1.1也可以多建立幾個(gè)TCP連接,來支持處理更多并發(fā)的請(qǐng)求,但是創(chuàng)建TCP連接本身也是有開銷的。

TCP連接有一個(gè)預(yù)熱和保護(hù)的過程,先檢查數(shù)據(jù)是否傳送成功,一旦成功過,則慢慢加大傳輸速度。因此對(duì)應(yīng)瞬時(shí)并發(fā)的連接,服務(wù)器的響應(yīng)就會(huì)變慢。所以最好能使用一個(gè)建立好的連接,并且這個(gè)連接可以支持瞬時(shí)并發(fā)的請(qǐng)求。

關(guān)于多路復(fù)用,可以參看學(xué)習(xí)NIO 。


數(shù)據(jù)壓縮


HTTP1.1不支持header數(shù)據(jù)的壓縮,HTTP2.0使用HPACK算法對(duì)header的數(shù)據(jù)進(jìn)行壓縮,這樣數(shù)據(jù)體積小了,在網(wǎng)絡(luò)上傳輸就會(huì)更快。


服務(wù)器推送


意思是說,當(dāng)我們對(duì)支持HTTP2.0的web server請(qǐng)求數(shù)據(jù)的時(shí)候,服務(wù)器會(huì)順便把一些客戶端需要的資源一起推送到客戶端,免得客戶端再次創(chuàng)建連接發(fā)送請(qǐng)求到服務(wù)器端獲取。這種方式非常合適加載靜態(tài)資源。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容