http2.0
http2.0 性能增強(qiáng)的核心:多路復(fù)用。
就是在同一個(gè)tcp連接里面我可以同時(shí)去傳輸數(shù)據(jù)和接收數(shù)據(jù)。同時(shí)傳輸多個(gè)數(shù)據(jù),同時(shí)傳輸多個(gè)資源。像我們http1.1的時(shí)候,我們需要建立多個(gè)鏈接才能同時(shí)去傳輸多個(gè)資源,所以我們經(jīng)常將前后端分離,并且前端單獨(dú)搞一個(gè)域名,就是為了突破這個(gè)限制。但是在http2.0里面已經(jīng)不需要了。因?yàn)樗麜?huì)復(fù)用同一個(gè)鏈接去同時(shí)傳很多個(gè)文件。

然后我們來(lái)看一個(gè)對(duì)比,左邊是1.1 ,右邊是2.0

http2.0 時(shí)代不再需要的優(yōu)化:
-多域名突破連接數(shù)限制;
-資源合并(js/css合并,css sprites,內(nèi)嵌base64圖片)
http2.0 的請(qǐng)求優(yōu)先級(jí)
-- 因?yàn)橘Y源是混合發(fā)送的,所以對(duì)不同的資源要設(shè)置優(yōu)先級(jí),保證js/css優(yōu)先發(fā)送,圖片后發(fā)送
http2.0首部壓縮
http1.1版本是不支持頭部壓縮的,頭部其實(shí)還是挺大的。

就是在客戶端和服務(wù)器端都存放了中間這樣一張查找表,拿比如說(shuō)1,2,51,這種數(shù)字來(lái)代表某個(gè)請(qǐng)求字段是什么值,然后服務(wù)器和瀏覽器同時(shí)維護(hù)這樣一張表,所以在發(fā)送請(qǐng)求的時(shí)候,瀏覽器就會(huì)去查找這樣一張表,比如method ,是2,然后發(fā)過(guò)去一個(gè)2,服務(wù)器再去找2 對(duì)應(yīng)的是啥~~~就是這樣一個(gè)情況,然后就減少了請(qǐng)求頭的內(nèi)容。
http2.0推送
http2.0推送其實(shí)和websocket 推送還是不太一樣的。

他是指的是服務(wù)器端同時(shí)發(fā)幾個(gè)js和css給客戶端。服務(wù)端肯定知道我哪個(gè)頁(yè)面對(duì)應(yīng)需要哪個(gè)js等,當(dāng)我請(qǐng)求index.html頁(yè)面的時(shí)候,服務(wù)端就會(huì)自動(dòng)將對(duì)應(yīng)的js,css給到客戶端。
//服務(wù)器端推送的代碼
spdy.createServer(options,function(req,res){
//push javascript asset (/main.js) to the client
res.push('/main.js',
{'content-type':'application/javascript'},function(){
stream.end('alert ("hello from push stream!")');
});
//write main response body and terminate stream
res.end("hello world!<script src='.main.js'></script>");
}).listen(443);