gpt4 book ai didi

http - 为什么 HTTP/2 多路复用优于 http/1.1?

转载 作者:可可西里 更新时间:2023-11-01 16:47:47 31 4
gpt4 key购买 nike

在 HTTP/1.1 的情况下,一个网页有多个资源,每个文件都会创建一个到服务器端的连接来检索数据、js、css 等。我认为工作模式类似于 mutli-process或多线程,并行工作

但在 HTTP/2 的情况下,每个域在网页中只有一个连接,即使它可以处理来自客户端浏览器的多个请求,也可能类似于单线程

我不知道为什么 http/2 的性能比 http/1.1 好?

最佳答案

对于网页,HTTP/2 多路复用比 HTTP/1.1 更高效的原因与打开 TCP 连接的成本关系不大。

在 HTTP/1.1 中,浏览器通常每个域最多打开 6 个连接。在这些连接打开后,它们会一直保持打开状态并一遍又一遍地重复使用,直到它们闲置为止。

然而,HTTP/2 比 HTTP/1.1 更快,即使那些连接已经打开之后,所以这里显然不是打开 TCP 连接的成本。

今天一个典型的网页可能有多达 100 个资源要从源服务器下载。让我们保持简单,假设客户端和服务器之间有 200 毫秒的往返时间。为了下载 HTTP/1.1 中的页面,浏览器必须下载主 HTML 页面(1 次往返),然后解析 HTML 页面并安排下载 100 个资源——但它只有 6 个连接。所以浏览器发送前 6 个请求,然后等待它们返回(1 次往返);然后是另外 6 个请求,然后等待它们返回(1 次往返); ETC。在这个简单的模型中,要下载 100 个资源,浏览器需要 1 + 17 次往返,每次 200 毫秒意味着 3.6 秒。

在 HTTP/2 中,浏览器发出对 HTML 页面的请求,但是由于 HTTP/2被复用。在这个简单的模型中,要下载 100 个资源,浏览器需要 1 + 1 次往返,即 400 毫秒,下载时间加快 10 倍。

现在,事情并不像上面描述的那么简单,但是多路复用带来的增益仍然有相当大的影响。

您可以通过在线观看示例(herehere)亲自了解这种影响,您可以观看 my HTTP/2 presentation关于这个和其他 HTTP/2 的好处(您可以观看解释多路复用效果的演示 here)。

关于http - 为什么 HTTP/2 多路复用优于 http/1.1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43749593/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com