HTTP/3 已经来临 , 这对 Web 性能是件大事 。让我们看看它能让网站速度提升多少吧!
等等 , HTTP/2 难道不好么?它在这几年不是挺火的吗?确实是 , 但它仍有一些问题 。为了解决这些问题 , 新版本的协议正朝向“标准跟踪(standards track , RFC 的类别之一)”做出努力 。
嗯 , 但 HTTP/3 真能让网络变得更快?它肯定能 , 我们将用基准测试来证明这一点 。
预览在我们深入细节之前 , 让我们快速预览一下基准测试的结果 。在下方的图表中 , 我们在相同的网络中使用相同的浏览器请求相同的站点 , 唯一不同的只是 HTTP 协议的版本 。每个站点都被重复请求 20 次 , 响应时间通过浏览器的 Performance API 测量 。(更多关于基准测试的细节在下方 。)
你可以清楚地看到使用每个新版本的 HTTP 协议(相较于 HTTP/1.1)带来的性能提升:

文章插图
当地理距离更远或网络不太可靠时 , 这些差别将变得更加明显 。
在了解 HTTP/3 基准测试的细节之前 , 我们需要知道一些背景知识 。
HTTP 简史HTTP(超文本传输协议 1.0)的第一个正式版本在 1996 年完成 。然而 , 该版本存在一些实践问题且部分标准需要更新 , 所以 HTTP/1.1 在一年后(也就是 1997 年)发布了 。正如作者所说:
然而 , HTTP/1.0 没有充分考虑分层代理、缓存、持久连接的需求和虚拟主机的影响 。此外 , 将自身标榜为 "HTTP/1.0" 但又没完全实践 HTTP/1.0 的应用数量急剧增加;因此 , 我们需要一个新版的协议以便两个相互通信应用能确认对方真实的通信能力 。18 年后 , 新版本的 HTTP 发布了 。在 2015 年 , RFC 7540 大张旗鼓地宣布 , 会将 HTTP/2 标准化为协议的下一个主要版本 。
一个连接 , 一个文件如果一个网页需要 10 个 JAVAScript 文件 , 那么浏览器就需要检索所有的 10 个文件才能完成加载 。在 HTTP/1.1 那个时代 , 一次与服务器的 TCP 连接只能下载一个文件 。这意味着文件是依次下载的 , 只要有一个文件出现延迟 , 后面的所有下载都会被阻塞 。这个现象被称为队头阻塞;这对页面性能是不利的 。
为了解决这个问题 , 浏览器可以打开多个 TCP 连接来并行地检索资源 。然而 , 这是种资源密集型的方法 。每个新的 TCP 连接都会消耗客户端和服务端的资源;并且当你再引入 TLS 后 , 整个通信过程将会发生大量的 SSL 协商 。因此 , 我们需要一种更好的解决方案 。
HTTP/2 中的多路复用HTTP/2 的最大亮点就是它的多路复用(multiplexing)机制 。HTTP/2 解决了应用层的队头阻塞的问题 , 通过将为数据转化为二进制(译者注:并且在传输前将数据进行分帧 , 以帧为单位进行传输) , 使得在多文件下载时能够多路复用 。即 , 客户端可以同时请求所有的 10 个文件 , 并通过一个 TCP 连接并行地下载这 10 个文件 。
不幸的是 , HTTP/2 的通信过程中仍存在队头阻塞的问题 , 而源头就出现在它的下一层 —— TCP 变成了传输链上最脆弱的一环 。任何出现了丢包的数据流都需要等待该包重新传输后才能继续 。
【HTTP/3 为什么这么快?】然而 , 由于 HTTP/2 多路复用的并行特性对于 TCP 的丢包恢复机制是不可见的 , 一个丢失或顺序不对的数据包会导致所有活动的事务停顿 , 无论其是否受到丢包的直接影响 。事实上 , 在高丢包的环境下 , HTTP/1.1 反而表现得更好 , 正是因为 HTTP/2 开了太多并行的 TCP 连接!
QUIC 和 HTTP/3 中真正的多路复用现在说到 HTTP/3 。HTTP/2 和 HTTP/3 的主要区别在于所使用的传输协议 。与之前的 TCP 协议不同 , HTTP/3 使用了一个全新的协议 —— QUIC 。QUIC 是一个通用的传输协议 , 解决了 HTTP/2 因为 TCP 而产生的队头阻塞问题 。这个协议能让你通过 UDP 创建一系列带状态的流(这与 TCP 很相似) 。

文章插图
QUIC 传输协议包含流的复用和对每个流的流量控制 , 这两者与 HTTP/2 中实现的类似 。通过在整个连接中提供流级别的可靠性和拥塞控制 , 比起 TCP 映射 , QUIC 更能提高 HTTP 的性能 。
推荐阅读
- 免费视频配音工具,原来视频配音这么简单,我真是爱了
- 气血不足如何调理 这么吃补血效果一级棒
- 大学生|月薪 1。4 万招不到大学生,公司感叹工资这么高了还招不到人?
- 计算机为什么偏爱用矩阵表示?因为设计简单、能硬件优化加速
- 常见的62种http响应代码整理
- |职场中如何学会说话?什么是会说话,学会这么说话让才能别人爱听
- 饭后百步走养生,四类人却不能这么做
- 飞天茅台为什么很难买?
- 为什么男要戴观音女要戴佛
- 吴三桂不放清军能打进来吗?吴三桂后来为什么反清
