node.js - 为什么 Web 服务器仍然使用 http 1.1 而不是 http 2?

标签 node.js http networking backend http2

作为一点背景知识,我刚刚完成了训练营并开始更深入地研究网络和 Web 服务器。
在阅读了一些关于 OSI 模型、TCP/IP 模型和 HTTP 的信息后,我发现这些理论知识与我在现实生活中所做的事情之间存在某种差距。
例如,我用在 node.js 上运行的服务器构建了几个项目。
直到最近我才发现它们在 HTTP 1.1 上运行。
我看到的所有教程类(class)或其他示例都使用 HTTP 1.1 而不是 HTTP 2。
从理论上讲,HTTP2 在处理大量数据方面做得更好,并且确实比 HTTP 1.1 更安全。
尽管有一些缺点,但似乎 http2 是 http 的高级形式,并且在过去几年中已经成熟。
我很难理解为什么服务器语言(或 node.js 的运行时)仍然使用 HTTP 1.1 而不是 2。
谁能解释一下?

最佳答案

TL;博士
许多人没有意识到新的变化。或者,有些人不受您提到的这些更改的影响,并且认为不需要重写他们的代码(尤其是当 HTTP 3.0 正在开发中时)。

以 IP 地址为例。 IPv6 已经出现了一段时间,虽然有些人使用它,但 65% 的互联网使用旧技术 IPv4。这是因为旧技术完美运行,许多系统都是古老的。
(作为引用,这里是谷歌的 usage graph of IPv6 )。
现在,在您的情况下,HTTP 2 与 HTTP 1。很多人甚至不知道 http2 已经过时了。就我而言,出于方便,我使用标准 HTTP 模块。你提到的安全漏洞并没有影响到很多人,而且随着 HTTP 3 的出现,人们为什么要切换?一方面,我将等待 HTTP 3。但是,随着时间的推移,越来越多的人将开始采用 HTTP 2 标准。
此外,正如许多人所注意到的,它们在理论和你所谓的“现实生活中的用法”之间存在很大差异。 Axios 就是一个例子,它是 Node.js 生态系统的主要请求模块。它实际上没有维护,有几个主要问题 here似乎它们永远不会被修复,构建失败,并且从 2015 年开始有 222 个问题,但在我写这篇文章的时候,每周有 16,434,719 人下载它。许多人在没有完全调查的情况下看不到这些问题,或者这些错误不会影响它们的使用。

关于node.js - 为什么 Web 服务器仍然使用 http 1.1 而不是 http 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65762967/

相关文章:

node.js - 平均堆栈安装

php - Laravel:对另一台服务器的 HTTP 请求

java - 响应 http POST 以告诉客户端这是错误的输入

C#拦截Http请求

java - 如何使用服务器套接字在Java中一次监听一个客户端?

node.js - 对链接用户进行分组的最佳策略是什么

javascript - Node.js 有必要设置 Content-Type 吗?

javascript - 面对动态数据的 ng-init 问题

c# - 获取本地IP地址

linux - gdb远程内核调试添加bug