了解一下Http
超文本傳輸協(xié)議,是一個(gè)基于請(qǐng)求與響應(yīng),無(wú)狀態(tài)的,應(yīng)用層的協(xié)議,常基于TCP/IP協(xié)議傳輸數(shù)據(jù),互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP的初衷是為了提供一種發(fā)布和接收HTML頁(yè)面的方法。下面是Http的發(fā)展歷史。
簡(jiǎn)單解釋一下HTTP/2
新的二進(jìn)制格式(Binary Format),HTTP1.x 的解析是基于文本。基于文本協(xié)議的格式解析存在天然缺陷,文本的表現(xiàn)形式有多樣性,要做到健壯性考慮的場(chǎng)景必然很多,二進(jìn)制則不同,只認(rèn) 0 和 1 的組合。基于這種考慮 HTTP2.0 的協(xié)議解析決定采用二進(jìn)制格式,實(shí)現(xiàn)方便且健壯。
多路復(fù)用(MultiPlexing),即連接共享,即每一個(gè) request 都是是用作連接共享機(jī)制的。一個(gè) request 對(duì)應(yīng)一個(gè) id,這樣一個(gè)連接上可以有多個(gè) request,每個(gè)連接的 request 可以隨機(jī)的混雜在一起,接收方可以根據(jù) request 的 id 將 request 再歸屬到各自不同的服務(wù)端請(qǐng)求里面。
header 壓縮,如上文中所言,對(duì)前面提到過(guò) HTTP1.x 的 header 帶有大量信息,而且每次都要重復(fù)發(fā)送,HTTP2.0 使用 encoder 來(lái)減少需要傳輸?shù)?header 大小,通訊雙方各自 cache 一份 header fields 表,既避免了重復(fù) header 的傳輸,又減小了需要傳輸?shù)拇笮 ?/p>
服務(wù)端推送(server push),同 SPDY 一樣,HTTP2.0 也具有 server push 功能。目前,有大多數(shù)網(wǎng)站已經(jīng)啟用 HTTP2.0,例如 YouTuBe,淘寶網(wǎng)等網(wǎng)站,利用 chrome 控制臺(tái)可以查看是否啟用。