图片授权基于:CC0协议
HTTP/2,简称为 h2 或 h2c,是 HTTP 协议的第二个版本。HTTP/2于2015年2月17日被批准,HTTP/2标准于2015年5月发表。多数主流浏览器已经在2015年底支持了该协议。
新增加的特性有:
1、应用协商
与HTTP/1.1在请求方法、状态码乃至URL和绝大多数HTTP头部字段等方面保持高度兼容性。减少了网络延迟、提高浏览器的页面加载速度(这个很猛)。
2、首部压缩
每次的通讯都会携带首部信息来描述资源的属性。对于相同的数据,不再重新通过每次请求和响应发送。每个新的首部键值对要么追加到当前表的末尾,要么替换表中之前的值。首部表在HTTP2.0的链接存续期内始终存在,由客户端和服务端共同渐进的更新。
3、服务端推送
之前做页面为了使请求数减少,会对页面的图片进行雪碧图、css合并压缩、这一举措的目的是因为:客户端一个请求只会返回一个响应,前面的请求没有响应时,后面的请求需要等待。新增加的功能就是服务器可以对一个客户端的请求发送多个响应。
4、二进制分帧
在不改变 HTTP1.x 的方法、状态码、首部字段的情况下,HTTP2.0 在「应用层 – HTTP」和「传输层 – TCP」之间加了一个二进制分帧层。
HTTP2.0会将所有传输信息分割为更小的消息和帧,并对它们用二进制格式的编码将其封装。(其中,HTTP1.X中的首部信息header封装到Headers帧中,而request body将被封装到Data帧中。)
把数据划分为更小更便捷的数据,在单链接多资源的方式中,减少了服务器和链接压力,内存占用更少,链接吞吐量大。
5、多路复用
浏览器在同一时间内,针对同一域名下的请求有一定的数量限制,超过限制就会被阻塞。
基于二进制分帧层,HTTP2可以在共享的TCP链接的基础上同时发送请求和响应,HTTP消息被分解为独立的帧,而不破坏消息本身的语义,交错发出去,在另一端根据流标识符和首部将他们重新组装起来(摘抄)。可以进行交错的发送请求和响应,这些请求和响应之间互不影响。只用一个链接可以并行发送多个请求和响应。
6、请求优先级
每个流都可以带有一个31bit的优先值:0表示最高优先级;2的31次方-1表示最低优先级。
服务器可以根据流的优先级控制资源分配,而在响应数据准备好之后,优先将最高优先级的帧发送给客户端。
服务器可以根据优先级作为交互数据的依据,比如客户端优先设置为.css>.js>.jpg。
资料参考:
https://zh.wikipedia.org/wiki/HTTP/2
https://juejin.im/post/5a4dfb2ef265da43305ee2d0
https://juejin.im/post/5b88a4f56fb9a01a0b31a67e
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34587.html