一、概述
1.HTTP1.0 最早在1996年在網(wǎng)頁中被使用,那時(shí)只是使用在一些較為簡單的網(wǎng)頁上和網(wǎng)絡(luò)請(qǐng)求上。
2.HTTP1.1 在 1999年開始廣泛應(yīng)用于現(xiàn)在的各大瀏覽器網(wǎng)絡(luò)請(qǐng)求中,同時(shí)HTTP1.1 也是當(dāng)前使用最為廣泛的 HTTP 協(xié)議。
3.HTTP1.0和HTTP1.1都不提供加密和身份驗(yàn)證機(jī)制。2者主要區(qū)別如下:
二、緩存處理
1.HTTP1.0 中主要使用 header 里的If-Modified-Since,Expires ,Pragma等字段進(jìn)行緩存處理。
2.HTTP1.1 引入了更多的緩存控制策略,例如 Entity tag,If-Unmodified-Since, If-Match, If-None-Match等,這樣可以使用更多可供選擇的緩存頭來控制緩存策略。
三、帶寬優(yōu)化及網(wǎng)絡(luò)連接的使用
1.HTTP1.0 中,存在一些浪費(fèi)帶寬的現(xiàn)象,例如客戶端只是需要某個(gè)對(duì)象的一部分,而服務(wù)器卻將整個(gè)對(duì)象傳輸?shù)娇蛻舳?,這是因?yàn)樗恢С謹(jǐn)帱c(diǎn)續(xù)傳功能。
2.HTTP1.1 則在請(qǐng)求頭引入了 range 字段,它允許只請(qǐng)求資源的某個(gè)部分,即返回碼是 206(Partial Content),這樣通過支持?jǐn)帱c(diǎn)續(xù)傳功能方便了開發(fā)者充分利用帶寬和連接。
四、錯(cuò)誤通知的管理
1.在 HTTP1.1 中新增了 24 個(gè)錯(cuò)誤狀態(tài)響應(yīng)碼,如 409(Conflict)
表示請(qǐng)求的資源與資源的當(dāng)前狀態(tài)發(fā)生沖突;410(Gone)表示服務(wù)器上的某個(gè)資源被永久性的刪除。
2.HTTP1.1 中可以使用Transfer-Encoding頭字段來傳輸錯(cuò)誤信息。
五、Host 頭處理
1.在 HTTP1.0 中認(rèn)為每臺(tái)服務(wù)器都綁定一個(gè)唯一的 IP 地址,因此,請(qǐng)求消息中的 URL 并沒有傳遞主機(jī)名(Hostname)。
2.但隨著虛擬主機(jī)技術(shù)的發(fā)展,在一臺(tái)物理服務(wù)器上可以存在多個(gè)虛擬主機(jī)(Multi-homed Web Servers),并且它們共享同一個(gè) IP 地址。HTTP1.1 的請(qǐng)求消息和響應(yīng)消息都支持 Host 頭域,且請(qǐng)求消息中如果沒有 Host 頭域會(huì)報(bào)告一個(gè)錯(cuò)誤(400 Bad Request)。這使得在同一個(gè)IP地址上部署多個(gè)域名成為可能,極大地推動(dòng)了虛擬主機(jī)技術(shù)的發(fā)展。
六、長連接
1.HTTP 1.1 支持長連接(Persistent Connection或Keep-Alive連接)和請(qǐng)求的流水線(Pipelining)處理,在一個(gè) TCP 連接上可以傳送多個(gè) HTTP 請(qǐng)求和響應(yīng),減少了建立和關(guān)閉連接的消耗和延遲。在 HTTP1.1 中默認(rèn)開啟 Connection:Keep-Alive,彌補(bǔ)了 HTTP1.0 每次請(qǐng)求都要?jiǎng)?chuàng)建連接的缺點(diǎn)。
2.HTTP1.0 不支持請(qǐng)求管道化,即在一個(gè)連接上不能同時(shí)發(fā)送多個(gè)請(qǐng)求。
HTTP1.1 支持請(qǐng)求管道化,同一連接上可以同時(shí)發(fā)送多個(gè)請(qǐng)求。但服務(wù)器必須按照請(qǐng)求的順序進(jìn)行響應(yīng),因此可能會(huì)造成隊(duì)頭阻塞(Head of Line Blocking)問題。
七、內(nèi)容協(xié)商
1.HTTP1.0內(nèi)容協(xié)商功能有限。
2.HTTP1.1引入了Accept,Accept-Charset,Accept-Encoding,Accept-Language等頭部字段,允許進(jìn)行更靈活的內(nèi)容協(xié)商。
八、傳輸大小和壓縮
1.HTTP1.0默認(rèn)沒有限制傳輸?shù)拇笮?,?duì)數(shù)據(jù)壓縮支持有限。
2.HTTP1.1引入了chunked機(jī)制,允許數(shù)據(jù)分塊傳輸,并且可以傳輸大小未知的數(shù)據(jù)。支持Content-Encoding壓縮數(shù)據(jù),支持Transfer-Encoding進(jìn)行分塊傳輸。
九、請(qǐng)求方法
1.HTTP1.0支持基本的請(qǐng)求方法,如GET,POST,HEAD等。
2.HTTP1.1新增了一些請(qǐng)求方法,如OPTIONS,PUT,DELETE,TRACE,CONNECT等。
微風(fēng)不燥,陽光正好,你就像風(fēng)一樣經(jīng)過這里,愿你停留的片刻溫暖舒心。
我是程序員小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等編程技術(shù)的技巧經(jīng)驗(yàn)分享),若作品對(duì)您有幫助,請(qǐng)關(guān)注、分享、點(diǎn)贊、收藏、在看、喜歡,您的支持是我們?yōu)槟峁椭淖畲髣?dòng)力。
歡迎關(guān)注。助您在編程路上越走越好!