HTTP2.0相比HTTP1.X大幅度的提升了web的性能。在与HTTP/1.1完全语义兼容的基础上,进一步减少了网络延迟。对于前端开发者来说,无疑减少了前端方面的优化工作。
多路复用
多路复用允许同时通过单一的HTTP/2连接发起多重的请求-响应消息
在HTTP/1.1协议中,浏览器客户端在同一时间内,针对同一个域名底下的请求有一定的数量限制,超过限制数目的请求会被阻塞。
这也是一些站点会有多个静态资源CDN域名的原因,目的就是变相解决浏览器针对同一个域名的请求限制阻塞问题。
而HTTP/2的多路复用则允许同时通过单一的HTTP/2连接发起多重的请求/响应消息。
HTTP/2可以很容易去实现多流并行而不用依赖建立多个TCP连接,HTTP/2把HTTP协议通信的基本单位缩小成一个一个的帧,这些帧对应着逻辑流中的消息并行的在同一个TCP连接上双向交换消息
二进制分帧
在不改动HTTP/1.x的语义、方法、状态码、uri以及首部字段等等的情况下,HTTP2是如何做到【突破HTTP1.1的性能限制,改进传输性能,实现低延迟和高吞吐量】?
关键之一就是在应用层(HTTP/2)和传输层(TCP or UDP)之间增加一个二进制分帧层。
二进制分帧层中,HTTP/2会将所有传输的信息分割成为更小的消息和帧,并对他们采用二进制格式的编码。其中HTTP1.x的受不信息会被封装到header frame,而相对应的request body则封装到一个data frame里面。
HTTP/2通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流。在过去,HTTP性能优化的关键不在于高带宽,而在是低延迟。tcp连接会随着时间进行自我调谐。HTTP/2通过让所有数据流共用同一个连接,可以更有效地使用tcp连接,让高带宽也能真正的服务于HTTP性能提升。
总结
HTTP2.0采用单连接多资源的方式,减少服务器端的连接压力,内存占用更小,连接吞吐量更大。
由于TCP连接的减少使得网络拥堵的情况有所改善,并且慢启动的时间减少,会使拥堵和丢包恢复的速度更快。
首部压缩
HTTP1.1并不支持首部压缩,SPDY采用的是通用的算法deflate,而HTTP2.0采用的是专门为首部压缩设计的HPACK
服务端推送
服务端推送是一种在客户端请求之前发送数据的机制。在HTTP2.0中服务端可以对客户端的一个请求发送多个响应。Server Push让HTTP1.x使用内嵌资源的优化手段变得没有意义。
服务端推送还有一个很大的优势:可以缓存。也让在遵循同源的情况下,不同的页面之间共享资源成为可能。
网友评论