为什么 HTTP/2 多路复用演示使用多个连接?
Why does a HTTP/2 multiplexing demo using multiple connections?
这些天我正在评估 HTTP/2(在 Nginx 上),作为提高我的应用程序性能的可能候选者。
我在看 this 不错的 Akamai HTTP2 演示。从这个演示中我可以看到 "http2" 部分加载速度更快,这显然要归功于 HTTP2 多路复用功能。
所以,我决定仔细看看。我打开了 Chrome(版本 51)开发人员工具并检查了网络面板。
我希望看到一个单一的网络连接,处理所有请求(例如多路复用)。
但是,我看到发出了多个连接,每个图像块一个:
此外,我看到几乎每个请求都有延迟("stalled"):
我预计(与 HTTP1 相反)所有请求将并行发出而不会延迟。有人可以帮助我了解发生了什么吗?
您看到的不是多个 connections,每个图像块一个,而是多个 requests,每个图像块一个,在一个TCP 连接。
多路复用的事实是显而易见的,因为有大量的请求(数十个甚至数百个)同时发送。
查看所有请求如何垂直对齐。
将此与 HTTP/1.1 配置文件进行比较,您会看到一个阶梯式金字塔式配置文件,因为一次只能(通常)发送 6 个请求。例如,请参阅我在 39:54.
上的演示文稿
因此,您看到的是像 HTTP/2 这样的多路复用协议的预期配置文件。
您看到这些请求的微小 "stalled" 延迟可能是由于内部实施延迟(例如排队)以及 HTTP/2 协议细节(例如流量控制)造成的。
这些天我正在评估 HTTP/2(在 Nginx 上),作为提高我的应用程序性能的可能候选者。
我在看 this 不错的 Akamai HTTP2 演示。从这个演示中我可以看到 "http2" 部分加载速度更快,这显然要归功于 HTTP2 多路复用功能。
所以,我决定仔细看看。我打开了 Chrome(版本 51)开发人员工具并检查了网络面板。
我希望看到一个单一的网络连接,处理所有请求(例如多路复用)。
但是,我看到发出了多个连接,每个图像块一个:
此外,我看到几乎每个请求都有延迟("stalled"):
我预计(与 HTTP1 相反)所有请求将并行发出而不会延迟。有人可以帮助我了解发生了什么吗?
您看到的不是多个 connections,每个图像块一个,而是多个 requests,每个图像块一个,在一个TCP 连接。
多路复用的事实是显而易见的,因为有大量的请求(数十个甚至数百个)同时发送。 查看所有请求如何垂直对齐。
将此与 HTTP/1.1 配置文件进行比较,您会看到一个阶梯式金字塔式配置文件,因为一次只能(通常)发送 6 个请求。例如,请参阅我在 39:54.
上的演示文稿因此,您看到的是像 HTTP/2 这样的多路复用协议的预期配置文件。
您看到这些请求的微小 "stalled" 延迟可能是由于内部实施延迟(例如排队)以及 HTTP/2 协议细节(例如流量控制)造成的。