优点:
(1)、二进制分帧:
HTTP 1.x 以换行符作为纯文本的分隔符,用文本格式来传输数据。而 HTTP2 的核心是二进制分帧层,HTTP 2将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码,二进制协议解析起来更高效。
帧:HTTP2数据通信的最小单位消息,指HTTP2中逻辑上的HTTP消息。例如请求和响应等,消息由一个或者多个帧组成。
流:存在于连接中的一个虚拟通道。流可以承载双向消息,每个流都有唯一的整数ID。
(2)头部压缩:
HTTP/1.x会在请求和响应中重复地携带不常改变的、冗长的头部数据,给网络带来额外的负担。HTTP2 头部压缩,重复数据不发送,数据不是文本,而是二进制。HTTP2在客户端和服务器端使用“首部表”来跟踪和存储之前发送的键值对,对于相同的数据,不再通过每次请求和响应发送。(可以理解为只发送差异数据,而不是全部发送,从而减少头部的信息量)
(3)服务器推送:
HTTP2 服务器推送。除了对最初请求的响应外,服务器还可以额外向客户端推送资源,而无需客户端明确地请求。服务器端可以在发送页面HTML时主动推送其他资源,而不用等到浏览器解析到相应位置,发起请求在响应。例如服务端可以主动把js和css文件推送给客户端,而不需要客户端解析HTML时再发送这些请求。服务器可以主动推送,客户端也有权利是否接收。如果服务端推送的资源已经被浏览器缓存过,浏览器可以通过发送RST_STREAM帧来拒收。主动推