HTTP2简介

HTTP2

HTTP1.1存在的问题

1、受浏览器内核和计算机cpu核数影响,对于同一个域名,浏览器最多同时创建8个TCP连接。

2、tcp本身有慢启动以及DNS域名解析也是需要时间的。

3、http1.1连接具有线头阻塞的问题,http1.1连接依赖于tcp的包进行串行传递,只有第一个包上有请求头信息,所以http1.1的请求是一个先进先出队列。

如果存在一个大的请求,那么后面的小请求需要等到前面的大请求结束后,才能开始。

4、每一个请求都是独立的,对于请求的header,存在大量重复的传输。

HTTP2的新特性

头部压缩

使用HPARK算法进行头部压缩

1、采用静态和动态字典表来减少重复请求头的传输
在这里插入图片描述

2、采用哈夫曼编码来压缩整数和字符串

二进制数据帧

1、使用二进制传输代替http1.1的文本传输,原本的报文消息被划分为多个更小的数据帧。
在这里插入图片描述

2、一个完整的http报文流由多个二进制帧组成
在这里插入图片描述

多路复用

1、http2.0将传统的http1.1请求的报文(header+body)拆分成二进制流的数据帧。

2、二进制数据帧成为了http2.0请求和响应的最小传输单位。

3、http1.1的一次请求作为一个流,一个流拆分为多个二进制数据帧。

4、每一个二进制数据帧上携带流id标识是哪个请求。

5、 server端在接收数据的时候,将多个具有相同流id的二进制数据帧整合成一个请求。

6、在一个tcp连接上,能够实现多个请求混发,解决了线头阻塞的问题。

在这里插入图片描述

服务端推送

1、客户端向服务端请求静态资源时,服务端会根据静态资源的依赖关系,主动向客户端推送可用用的静态资源,减少请求交互次数。
在这里插入图片描述

2、会引发的问题:浏览器会对前端资源进行缓存,如果多次请求的时候,会存在重复推送的场景。

一般情况下,css和js文件只有发版的时候,会更新版本号,html是配置禁止本地缓存。

引用说明

线头堵塞问题引用:https://www.zhihu.com/question/420898727/answer/1471214946

哈夫曼编码压缩算法引用:https://www.jianshu.com/p/da301c8d989f

多路复用引用:https://www.jianshu.com/p/42ca44202ca4

服务端推送引用:https://blog.csdn.net/qq_34629352/article/details/121319590

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值