HTTP/1.1、HTTP/2 和 HTTP/3:Web 协议的演变
HTTP 的演变:从 1.1 版到 3 版
HTTP 是驱动网络的协议——它是浏览器和服务器用来相互通信的语言。多年来,它经历了三个主要版本,每个版本都解决了前一个版本的局限性。了解这些差异有助于你理解为什么网络变得越来越快。
HTTP/1.1:早期网络的骨干
HTTP/1.1 自 20 世纪 90 年代末就已存在,至今仍被广泛使用。它是一种基于文本的协议——你实际上可以阅读请求和响应。每个请求都以纯文本形式发送,响应也以纯文本形式返回,其中包含描述内容类型、缓存规则和连接状态等信息的标头。
HTTP/1.1 的主要限制是每个连接一次只能处理一个请求。如果一个页面需要十张图片,浏览器要么等待每张图片完成后再请求下一张,要么打开多个连接(通常每个域六个)。早期,开发人员通过使用多个域名并将许多小图片合并成单个精灵图来解决这个问题。
HTTP/2:一次重大飞跃
HTTP/2 通过从文本切换到二进制格式改变了游戏规则。这听起来像是一个技术细节,但它实现了一项重要的功能:多路复用。无需等待一个请求完成后再开始下一个,多个请求和响应可以在单个连接上同时发送。不再需要排队等待。
HTTP/2 还引入了标头压缩,减少了多个请求中重复标头的开销,以及服务器推送,允许服务器在浏览器请求之前发送资源。实际上,最大的好处是单个连接比 HTTP/1.1 所需的六个连接效率高得多。
HTTP/3:为移动世界而构建
HTTP/3 是最新版本,与其前身有根本不同。它不再运行在 TCP 上,而是运行在基于 UDP 构建的 QUIC 上。这听起来像是一个小变化,但它对性能有重大影响。
TCP 存在一个称为队头阻塞的问题:如果单个数据包丢失,所有后续数据都必须等待其重新传输,即使其他数据不相关。QUIC 通过独立处理每个流来解决这个问题——一个流上的数据包丢失不会影响其他流。QUIC 还默认加密所有内容,减少连接建立时间,并且可以在网络变化(例如从 Wi-Fi 切换到移动数据)时保持连接而不会断开。
你应该使用哪一个?
没有理由只选择一个。现代服务器可以支持所有三个版本,并与每个客户端协商最佳版本。HTTP/1.1 对于简单的 API 和遗留系统仍然适用。HTTP/2 是当今大多数生产网站的标准。HTTP/3 对于移动用户、高延迟网络上的用户以及全球受众尤其有益。随着 QUIC 支持的成熟,HTTP/3 将成为默认协议。
使用现代 Web 服务器(如 NGINX、Caddy 或 Cloudflare)在服务器上启用 HTTP/2 和 HTTP/3 非常简单。浏览器会自动处理协商,因此您的访问者无需进行任何更改即可获得最佳可用协议。
