HTTP2带来的优化点

http2的出现主要是为了解决http1中存在的问题,http1中存在的问题如下:

  1. 线头阻塞:http1在当初设计的时候,单个TCP连接上只能发送一个请求,在前面的请求未完成之前,后序的请求只能排队等待
  2. 多个TCP连接:虽然HTTP1.1中出现了管线化可以支持请求的并发,但是建立TCP连接的成本还是很高的,每次TCP的连接都需要经过3次握手,每次TCP的连接断开都需要经过4次挥手。
  3. 头部字段冗余:HTTP1.X版本采用文本格式,首部未压缩,而且每个请求都会带上cookie, user-agent等完全相同的首部字段
  4. 客户端需要主动请求,服务器端才会将相关的资源返回给客户端

http2的新技术

  1. 二进制分帧层
    http2性能提升的核心就在于二进制分帧层。HTTP2采用的是二进制协议,它采用二进制格式传输数据而不是文本格式。2.0把响应划分为两个帧,HEADERSDATA,也就是说一条HTTP响应划分成两个帧来传输,并且采用二进制编码。

三个基本概念

  • 流:已建立的TCP连接上的双向字节流,可以承载一个或者多个消息
  • 消息:一个完整的HTTP请求或者响应,由一个或者多个帧组成。特定消息的帧在同一个流内发送。这意味着一个HTTP请求或者响应只能在一个流内发送
  • 帧:通信的基本单位

多路复用
上面提到HTTP1.1的线头阻塞和多个TCP连接的问题,多路复用可以完美解决。HTTP2让所有的通信都在一个TCP连接上完成,真正的实现了请求的并发。

头部压缩
头部压缩在浏览器和服务器之间:

  • 维护一份相同的静态字典,包含常见的头部名称,以及常见的头部名称和值的组合
  • 维护一份相同的动态字典,可以动态添加内容
  • 通过静态Huffman编码对传输的首部字段进行编码

使用HTTP2第一次请求是,头部字段的内容会HPACK之后,被传给服务器端。第二次就不会传递这一部分实体内容,只会传递相应的头部字段

服务器端推送
客户端请求一个文件,服务器端会对这个文件进行分析,主动推送到客户端的缓存,当客户端收到原始网页的请求时,它需要的资源已经位于缓存中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值