1、HTTP1.0和HTTP1.1的一些區(qū)別
- 緩存處理,HTTP1.0中主要使用Last-Modified,Expires 來做為緩存判斷的標(biāo)準(zhǔn),HTTP1.1則引入了更多的緩存控制策略:ETag,Cache-Control… 帶寬優(yōu)化及網(wǎng)絡(luò)連接的使用,HTTP1.1支持?jǐn)帱c(diǎn)續(xù)傳,即返回碼是206(Partial Content)
- 錯誤通知的管理,在HTTP1.1中新增了24個錯誤狀態(tài)響應(yīng)碼,如409(Conflict)表示請求的資源與資源的當(dāng)前狀態(tài)發(fā)生沖突;410(Gone)表示服務(wù)器上的某個資源被永久性的刪除…
- Host頭處理,在HTTP1.0中認(rèn)為每臺服務(wù)器都綁定一個唯一的IP地址,因此,請求消息中的URL并沒有傳遞主機(jī)名(hostname)。
但隨著虛擬主機(jī)技術(shù)的發(fā)展,在一臺物理服務(wù)器上可以存在多個虛擬主機(jī)(Multi-homed Web Servers),并且它們共享一個IP地址。HTTP1.1的請求消息和響應(yīng)消息都應(yīng)支持Host頭域,且請求消息中如果沒有Host頭域會報告一個錯誤(400 Bad Request)
- 長連接,HTTP1.1中默認(rèn)開啟Connection: keep-alive,一定程度上彌補(bǔ)了HTTP1.0每次請求都要創(chuàng)建連接的缺點(diǎn)
2、HTTP2.0和HTTP1.X相比的新特性 - 新的二進(jìn)制格式(Binary Format),HTTP1.x的解析是基于文本,基于文本協(xié)議的格式解析存在天然缺陷,文本的表現(xiàn)形式有多樣性,要做到健壯性考慮的場景必然很多,二進(jìn)制則不同,只認(rèn)0和1的組合,基于這種考慮HTTP2.0的協(xié)議解析決定采用二進(jìn)制格式,實現(xiàn)方便且健壯
- header壓縮,HTTP1.x的header帶有大量信息,而且每次都要重復(fù)發(fā)送,HTTP2.0使用encoder來減少需要傳輸?shù)膆eader大小,通訊雙方各自cache一份header fields表,既避免了重復(fù)header的傳輸,又減小了需要傳輸?shù)拇笮?- 服務(wù)端推送(server push),例如我的網(wǎng)頁有一個sytle.css的請求,在客戶端收到sytle.css數(shù)據(jù)的同時,服務(wù)端會將sytle.js的文件推送給客戶端,當(dāng)客戶端再次嘗試獲取sytle.js時就可以直接從緩存中獲取到,不用再發(fā)請求了。