HTTP /2, 2015年5月RFC 7540正式發(fā)表的下一代HTTP協(xié)議改艇,是1999年來HTTP 1.1發(fā)布后的首個(gè)更新。相對(duì)于前一個(gè)版本坟岔,HTTP /2以快著稱谒兄。
根據(jù)2015的WWDC Session711,我們知道iOS9+社付,NSURLSession開始正式支持HTTP /2舵变,也就意味著你的網(wǎng)絡(luò)連接速度也可以有如上圖那樣的提升酣溃。
我們先來聊聊網(wǎng)絡(luò)的通訊協(xié)議。我們也都知道纪隙,HTTP協(xié)議是基于TCP協(xié)議的赊豌。所以在每次的HTTP請(qǐng)求之前,客戶端和服務(wù)器端绵咱,都先需要經(jīng)過TCP連接的三次握手碘饼,即每次請(qǐng)求之前,網(wǎng)絡(luò)的數(shù)據(jù)都已經(jīng)在客戶端和服務(wù)器端之間來回了三次悲伶;
事實(shí)上在HTTP 0.9, HTTP 1.0協(xié)議的時(shí)代艾恼,每次HTTP的請(qǐng)求,都需要先經(jīng)過TCP的連接麸锉,然后才開始HTTP的請(qǐng)求钠绍;
為了讓我們的請(qǐng)求更快,避免每次都產(chǎn)生一個(gè)TCP三次握手花沉,成了一個(gè)優(yōu)化的選項(xiàng)柳爽。于是在HTTP 1.1中,出現(xiàn)了Connection: keep-alive這個(gè)選項(xiàng)碱屁。這個(gè)優(yōu)化選項(xiàng)磷脯,可以使得客戶端和服務(wù)器端復(fù)用一個(gè)TCP連接,從而減小每次的網(wǎng)絡(luò)請(qǐng)求時(shí)間娩脾;
聊到這里赵誓,本章提出的問題,其實(shí)答案已經(jīng)逐漸明了了柿赊。沒錯(cuò)俩功,共享的Session將會(huì)復(fù)用TCP的連接,而每次都新建Session的操作將導(dǎo)致每次的網(wǎng)絡(luò)請(qǐng)求都開啟一個(gè)TCP的三次握手碰声。