为什么使用多个连接的HTTP / 2多路复用演示?

时间:2016-06-23 15:24:06

标签: google-chrome nginx http2

这些天我正在评估HTTP / 2(在Nginx上),作为提高我的应用程序性能的可能候选者。

我正在寻找this不错的Akamai HTTP2演示。从这个演示我可以看到" http2"由于HTTP2多路复用功能,部分加载速度要快得多。

所以,我决定仔细一点。我打开了Chrome(第51版)开发人员工具并检查了网络面板。

我希望看到一个网络连接,处理所有请求(例如多路复用)。

但是,我看到发出多个连接,每个图像块一个:

enter image description here

此外,我发现几乎每个请求都有延迟("停滞"):

enter image description here

我预计(与HTTP1相反)所有请求将并行发布而不会延迟。有人会帮我理解发生了什么吗?

1 个答案:

答案 0 :(得分:3)

您看到的不是多个连接,每个图像磁贴一个,但多个请求,每个图像磁贴一个,在单个TCP连接上。

多路复用的事实是显而易见的,因为同时发送了大量请求(数十甚至数百)。 查看请求是如何全部垂直对齐的。

将此与HTTP / 1.1配置文件进行比较,您将看到梯形图,ziggurat风格的配置文件,因为一次只能发送(通常)6个请求。例如,请参阅我在39:54给出的演示文稿。

因此,您看到的是HTTP / 2等多路复用协议的预期配置文件。

微小的"停滞不前"您看到这些请求的延迟可能是由于内部实现延迟(例如排队)以及HTTP / 2协议详细信息(如流控制)。