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

时间:2017-05-03 01:21:40

标签: http http2

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

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

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

2 个答案:

答案 0 :(得分:5)

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往返);等等 在这个简单的模型中,要下载100个资源,浏览器需要1 + 17个往返,每个200毫秒,这意味着3.6秒。

在HTTP / 2中,浏览器发出对HTML页面的请求,但是由于HTTP / 2的事实,它可以免费为100个资源提供所有请求而无需等待是多路复用的。 在这个简单的模型中,要下载100个资源,浏览器需要1 + 1往返,即400毫秒,下载时间加速10倍。

现在,事情并不像上面描述的那么简单,但由于多路复用而产生的收益仍然会产生相当大的影响。

您可以通过在线观看示例(herehere)自行查看此影响,并且可以观看my HTTP/2 presentation有关此优势和其他HTTP / 2优势(您可以观看解释多路复用效果here)的演示。

答案 1 :(得分:3)

创建TCP连接是一项代价高昂的操作,它类似于复制一个大文件和数千个小文件,或移动一个大盒子和许多小盒子