浅析HTTP/2的多路复用
HTTP/2有三大特性:头部压缩、Server Push、多路复用。前两个特性意思比较明确,也好理解,唯有多路复用不太好理解,尤其是和HTTP1.1进行对比的时候,这个问题我想了很长时间,也对比了很长时间,现在把思考的结果分享出来,希望对大家有帮忙。 先来说说Keep-Alive 在没有 Keep-Alive 前,我们与服务器请求数据的流程是这样: 浏览器请求 //static.mtime.cn/a.js -->解析域名-->HTTP连接-->服务器处理文件-->返回数据-->浏览器解析、渲染文件 浏览器请求 //static.mtime.cn/b.js -->解析域名-->HTTP连接-->服务器处理文件-->返回数据-->浏览器解析、渲染文件 ... ... ... 这样循环下去,直至全部文件下载完成。 这个流程最大的问题就是: 每次请求都会建立一次HTTP连接 ,也就是我们常说的3次握手4次挥手,这个过程在一次请求过程中占用了相当长的时间,而且逻辑上是非必需的,因为不间断的请求数据,第一次建立连接是正常的,以后就占用这个通道,下载其他文件,这样效率多高啊!你猜对了,这就是 Keep-Alive 。 Keep-Alive 解决的问题 Keep-Alive 解决的核心问题:一定时间内,同一域名多次请求数据,只建立一次HTTP请求,其他请求可复用每一次建立的连接通道