HTTP / 2的TTFB比HTTP / 1.1高得多


2

有没有其他人在IIS10上遇到HTTP / 2的这个问题。我在Azure上设置了一个VM,在IIS10上有一个网站。我已经设置了SSL等,并在HTTP / 2上测试了该站点,关闭了SSL并在HTTP / 1.1的同一浏览器上对其进行了测试。结果出乎意料,HTTP / 1.1优于HTTP / 2 BIG TIME!

测试是从相同的机器完成的,完全相同的网页(包含大量要加载的资源),唯一改变的是协议。

HTTP / 2结果: HTTP / 2加载时间

HTTP / 1.1结果: 在此输入图像描述

正如您所看到的,HTTP / 1.1优于HTTP / 2,对我而言,服务器需要花费大量时间来响应请求(绿色 - 第一个字节的时间)。

有任何想法吗?


一个假设是IIS10和Windows Server 2016尚未完成,并且HTTP / 2性能存在问题,但我找不到其他任何人抱怨它
Daniel Wardin 2015年

我使用未加密的HTTP / 1.1加密HTTP / 2。如果未加密的HTTP / 1.1优于加密的HTTP / 2,您认为这会有所不同吗?
Daniel Wardin 2015年

Answers:


2

不同之处在于HTTP / 1和HTTP / 2如何为网络设置套接字。

在HTTP / 1中,浏览器请求单个资产,然后在发出下一个请求之前等待该资产下载。这非常慢,所以为了解决这个问题,浏览器开始多路复用他们的请求并一次发出6-8个请求,在这些6-8个请求之间分配带宽。

在HTTP / 2中,浏览器打开一个套接字,发出所有请求,然后等待所有资产以最高可用带宽进行流式传输。

您应该看到高TTFB的原因是因为在HTTP / 1中,每个请求都是一个单独的套接字,但在HTTP / 2中,所有请求都通过单个流下载。您可能已经提出了请求,但您必须等待服务器响应您请求的所有数据。

理论上,HTTP / 2应该更快,因为它更有效 - 你没有为每个请求打开一个新套接字的开销。您将所有数据都流式传输到单个数据管道中,并且可以根据页面的加载方式确定请求的优先级。

在实践中,这取决于浏览器正确地进行优先级请求,并且网络允许单个套接字流的全带宽而不是人为地限制请求。

此外,由于您已声明您正在进行未加密的HTTP / 1和加密的HTTP / 2,因此加密将导致额外的开销和性能损失。您可以尝试使用加密的HTTP / 1进行更好的比较。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.