http2.0
http2.0 性能增強(qiáng)的核心:多路復(fù)用。
就是在同一個tcp連接里面我可以同時去傳輸數(shù)據(jù)和接收數(shù)據(jù)渴邦。同時傳輸多個數(shù)據(jù)洪碳,同時傳輸多個資源软族。像我們http1.1的時候,我們需要建立多個鏈接才能同時去傳輸多個資源仁锯,所以我們經(jīng)常將前后端分離,并且前端單獨(dú)搞一個域名,就是為了突破這個限制毛秘。但是在http2.0里面已經(jīng)不需要了。因?yàn)樗麜?fù)用同一個鏈接去同時傳很多個文件阻课。
然后我們來看一個對比叫挟,左邊是1.1 ,右邊是2.0
http2.0 時代不再需要的優(yōu)化:
-多域名突破連接數(shù)限制限煞;
-資源合并(js/css合并抹恳,css sprites,內(nèi)嵌base64圖片)
http2.0 的請求優(yōu)先級
-- 因?yàn)橘Y源是混合發(fā)送的,所以對不同的資源要設(shè)置優(yōu)先級署驻,保證js/css優(yōu)先發(fā)送奋献,圖片后發(fā)送
http2.0首部壓縮
http1.1版本是不支持頭部壓縮的,頭部其實(shí)還是挺大的旺上。
就是在客戶端和服務(wù)器端都存放了中間這樣一張查找表瓶蚂,拿比如說1,2抚官,51扬跋,這種數(shù)字來代表某個請求字段是什么值,然后服務(wù)器和瀏覽器同時維護(hù)這樣一張表凌节,所以在發(fā)送請求的時候钦听,瀏覽器就會去查找這樣一張表,比如method ,是2倍奢,然后發(fā)過去一個2朴上,服務(wù)器再去找2 對應(yīng)的是啥~~~就是這樣一個情況,然后就減少了請求頭的內(nèi)容卒煞。
http2.0推送
http2.0推送其實(shí)和websocket 推送還是不太一樣的痪宰。
他是指的是服務(wù)器端同時發(fā)幾個js和css給客戶端。服務(wù)端肯定知道我哪個頁面對應(yīng)需要哪個js等,當(dāng)我請求index.html頁面的時候衣撬,服務(wù)端就會自動將對應(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);