HTTP1.0恩商、HTTP1.1和HTTP2.0區(qū)別
1. HTTP1.0與HTTP1.1
1.1 長連接
- HTTP1.0 需要使用 keep-alive 參數(shù)來告知服務(wù)器建立長連接变逃。
- HTTP1.1 默認開啟長連接 keep-alive ,在一個 TCP 連接上可以傳送多個 HTTP 請求和響應(yīng)怠堪,減少了建立和關(guān)閉連接的消耗和延遲揽乱。
1.2 節(jié)約帶寬
- HTTP1.0 存在浪費帶寬現(xiàn)象,客戶端僅需要對象一部分粟矿,服務(wù)端卻將整個對象傳送過來凰棉,不支持斷點續(xù)傳功能。
- HTTP1.1 支持只發(fā)送 header 信息(不含body信息) 陌粹,如果服務(wù)器認為客戶端有請求權(quán)限撒犀,則返回100,客戶端收到100響應(yīng)才開始把請求 body 發(fā)送到服務(wù)器;若返回401或舞,則不發(fā)送節(jié)約帶寬荆姆。
1.3 HOST域
隨著虛擬主機技術(shù)的發(fā)展,一臺物理服務(wù)器可以存在多個虛擬主機映凳,并且他們共享一個IP地址胆筒。
- HTTP1.0 認為每臺服務(wù)器都綁定唯一的IP地址,所以請求消息的 URL 并沒有傳遞主機名诈豌,HTTP1.0 沒有HOST域仆救。
- HTTP1.1 請求和響應(yīng)消息都支持HOST域,且請求消息中沒有HOST域會報400 Bad Request 錯誤矫渔。
1.4 緩存處理
- HTTP1.0 使用header 中的If-Modified-Since, Expires 來作為緩存判斷的標準彤蔽。
- HTTP1.1 引入的更多的緩存控制策略 Entity tag, If-Unmodified-Since, If-Match, If-None-Match等。
1.5 錯誤通知管理
- HTTP1.1 新增了24個錯誤狀態(tài)響應(yīng)碼庙洼,409(Confict)請求資源與資源當前狀態(tài)沖突顿痪;410(Gone)服務(wù)器上某個資源被永久刪除。
*** 長節(jié)H緩錯 ***
2. HTTP1.1和HTTP2.0
2.1 多路復(fù)用
- HTTP1.1 需要建立多個TCP連接油够,來支持處理更多并發(fā)的請求员魏,創(chuàng)建TCP連接本身有開銷。
- HTTP2.0 多路復(fù)用叠聋,同一個TCP連接并發(fā)處理多個請求,且并發(fā)請求數(shù)量比1.1大了好幾個數(shù)量級受裹。
2.2 頭部數(shù)據(jù)壓縮
- HTTP1.1 不支持header 數(shù)據(jù)的壓縮碌补。
- HTTP2.0 使用算法對header 數(shù)據(jù)進行壓縮,網(wǎng)絡(luò)傳輸更快棉饶。
2.3 服務(wù)器推送
服務(wù)器推送:在客戶端請求之前發(fā)送數(shù)據(jù)的機制厦章。
網(wǎng)頁中使用了很多資源: HTML、CSS照藻、JS袜啃、圖片等
- HTTP1.1 中每個資源都必須明確的請求
- HTTP2.0 中引入sever push,允許服務(wù)端推送資源給客戶端幸缕,達到一次明確請求群发,直接推送。
*** 多頭服 ***