http2.0
http2.0 性能增强的核心:多路复用。
就是在同一个tcp连接里面我可以同时去传输数据和接收数据。同时传输多个数据,同时传输多个资源。像我们http1.1的时候,我们需要建立多个链接才能同时去传输多个资源,所以我们经常将前后端分离,并且前端单独搞一个域名,就是为了突破这个限制。但是在http2.0里面已经不需要了。因为他会复用同一个链接去同时传很多个文件。
然后我们来看一个对比,左边是1.1 ,右边是2.0
http2.0 时代不再需要的优化:
-多域名突破连接数限制;
-资源合并(js/css合并,css sprites,内嵌base64图片)
http2.0 的请求优先级
-- 因为资源是混合发送的,所以对不同的资源要设置优先级,保证js/css优先发送,图片后发送
http2.0首部压缩
http1.1版本是不支持头部压缩的,头部其实还是挺大的。
就是在客户端和服务器端都存放了中间这样一张查找表,拿比如说1,2,51,这种数字来代表某个请求字段是什么值,然后服务器和浏览器同时维护这样一张表,所以在发送请求的时候,浏览器就会去查找这样一张表,比如method ,是2,然后发过去一个2,服务器再去找2 对应的是啥~~~就是这样一个情况,然后就减少了请求头的内容。
http2.0推送
http2.0推送其实和websocket 推送还是不太一样的。
他是指的是服务器端同时发几个js和css给客户端。服务端肯定知道我哪个页面对应需要哪个js等,当我请求index.html页面的时候,服务端就会自动将对应的js,css给到客户端。
//服务器端推送的代码
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);