在 HTTP/1 中,每次请求都会建立一次HTTP连接,也就是我们常说的3次握手4次挥手,这个过程在一次请求过程中占用了相当长的时间,即使开启了 Keep-Alive ,解决了多次连接的问题,但是依然有两个效率上的问题:

  • 第一个:串行的文件传输。当请求a文件时,b文件只能等待,等待a连接到服务器、服务器处理文件、服务器返回文件,这三个步骤。我们假设这三步用时都是1秒,那么a文件用时为3秒,b文件传输完成用时为6秒,依此类推。(注:此项计算有一个前提条件,就是浏览器和服务器是单通道传输)
  • 第二个:连接数过多。我们假设Apache设置了最大并发数为300,因为浏览器限制,浏览器发起的最大请求数为6,也就是服务器能承载的最高并发为50,当第51个人访问时,就需要等待前面某个请求处理完成。

HTTP/2的多路复用就是为了解决上述的两个性能问题。
在 HTTP/2 中,有两个非常重要的概念,分别是帧(frame)和流(stream)。
帧代表着最小的数据单位,每个帧会标识出该帧属于哪个流,流也就是多个帧组成的数据流。
多路复用,就是在一个 TCP 连接中可以存在多条流。换句话说,也就是可以发送多个请求,对端可以通过帧中的标识知道属于哪个请求。通过这个技术,可以避免 HTTP 旧版本中的队头阻塞问题,极大的提高传输性能。

http的知识我非常匮乏,先记录在此

最新文章

  1. iOS开发一个用户登录注册模块需要解决的坑
  2. shell编程之流程控制
  3. [Android] 查看Android中的AlarmManager事件
  4. 深入理解HTML5:语义、标准与样式(勇猛精进早登大师殿堂创最优品质交互)
  5. C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法
  6. myscroll
  7. Vagrant虚拟机的配置管理
  8. C#基础:集合
  9. 用不动点组合子解递归(python实现)
  10. SVD神秘值分解
  11. 用Chrome开发者工具做JavaScript性能分析
  12. keepalived 安装及配置
  13. 安装和使用git遇到的问题总结
  14. day26 Python isinstance和issubclass
  15. lxml xpath 爬取并正常显示中文内容
  16. VB.NET网络是否联通Function
  17. Proftpd 服务器安装配置
  18. 如何使用eclipse创建JAVA项目并写一个简单的HelloWorld
  19. tcpcopy简介
  20. JAVA 时间"dd/MMM/yyyy:HH:mm:ss Z", Locale.US

热门文章

  1. Numpy中数据的常用的保存与读取
  2. 1.Redis Lock
  3. mysql中的四种常用的引擎
  4. EAT表
  5. [每日一题2020.06.08]洛谷P1605 DFS
  6. LR脚本信息函数-lr_get_vuser_ip
  7. gulp压缩html,css,js文件流程、监听任务、使用gulp创建服务器、同时运行多个任务、反向代理
  8. 果然学习好是有道理的,学习Mysql与正则表达式笔记
  9. RocketMQ系列(七)事务消息(数据库|最终一致性)
  10. Redis系列(四):数据结构String类型中基本操作命令和源码解析