http2新特性
HTTP 2.0带来了更多强大功能,如多路复用、二进制帧、头部压缩、推送机制。这些功能给设备带来重大益处,如节省带宽、降低TCP连接次数、节省CPU使用等。
HTTP 版本分为HTTP 1.X、 HTTP 2.0,其中HTTP 1.X是当前使用最广泛的HTTP协议,HTTP 2.0称为超文本传输协议第二代。HTTP 1.X定义了四种与服务器交互的方式,分别为:GET、POST、PUT、DELETE,这些在HTTP 2.0中均保留。我们再来看看HTTP 2.0的新特性:
1.双向流、多路复用
在HTTP 1.X协议中,客户端在同一时间访问同一域名的请求数量是有限制的,当超过阈值时请求会被阻断,但是这种情况在HTTP 2.0中将被忽略。由于HTTP 1.X传输的是纯文本数据,传输体积较大,而HTTP 2.0传输的基本单元为帧,每个帧都包含消息,并且由于HTTP 2.0允许同时通过一条连接发起多个“请求-响应”消息,无需建立多个TCP链接的同时实现多条流并行,提高吞吐性能,并且在一个连接内对多个消息进行优先级的管理和流控。
2.二进制帧
相对于HTTP 1.X的纯文本传输来,HTTP 2.0传输的是二进制数据,与Protocol Buffers相辅相成。使得传输数据体积小、负载低,保持更加紧凑和高效。
3.头部压缩
因为HTTP是无状态协议,对于业务的处理没有记忆能力,每一次请求都需要携带设备的所有细节,特别是在头部都会包含大量的重复数据,对于设备来说就是在不断地做无意义的重复性工作。HTTP 2.0中使用“头表”来跟踪之前发送的数据,对于相同的数据将不再使用重复请求和发送,进而减少数据的体积。
4.服务器推送
服务端可以在发送页面HTML时主动推送其它资源,而不用等到浏览器解析到相应位置,发起请求再响应。例如服务端可以主动把JS和CSS文件推送给客户端,而不需要客户端解析HTML时再发送这些请求。
服务端可以主动推送,客户端也有权利选择是否接收。如果服务端推送的资源已经被浏览器缓存过,浏览器可以通过发送RST_STREAM帧来拒收。主动推送也遵守同源策略,服务器不会随便推送第三方资源给客户端。