HTTP1.1/2.0区别
多路复用
并发请求
2.0采用多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比1.1大了好几个数量级
多路复用概念
即连接共享,即每一个request都是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面
HTTP2.0多路复用优势?
HTTP 性能优化的关键并不在于高带宽,而是低延迟。TCP 连接会随着时间进行自我「调谐」,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移提高传输的速度。这种调谐则被称为 TCP 慢启动。由于这种原因,让原本就具有突发性和短时性的 HTTP 连接变的十分低效。
HTTP2.0 通过让所有数据流共用同一个连接,可以更有效地使用 TCP 连接,让高带宽也能真正的服务于 HTTP 的性能提升
HTTP2.0的多路复用和HTTP1.1中的长连接复用有什么区别?
1.1 Pipeling解决方式为,若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会,一旦有某请求超时等,后续请求只能被阻塞,毫无办法,也就是人们常说的线头阻塞;
2.0多个请求可同时在一个连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行
Header压缩
1.1的header带有大量信息,而且每次都要重复发送,2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,差量更新HTTP头部,只发送改变的,既避免了重复header的传输,又减小了需要传输的大小。
1.1不支持header数据的压缩,2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。
服务器推送
客户端对支持HTTP2.0的服务器请求某个资源时,服务器会顺便把一些客户端需要的别的资源一起推送过来,这样只需要一次HTTP通信就可以得到全部资源,提高了性能。
这种方式非常合适加载静态资源。
解析格式
HTTP1.0和1.1的解析是基于文本,解析存在天然缺陷
HTTP2.0的协议解析采用二进制格式,只认0和1的组合,实现方便且健壮。