对于我的研究,我正在分析HTTP / 2与HTTP / 1.1和HTTPS相比的性能。
对于我的测试,我加载了一组128个图像,以查看HTTP / 2对其多路复用流的好处。每个测试中的图像分别具有2KB,20KB和50KB的大小。
I got the following results for Page Load Time
最初,我会假设HTTP / 2比HTTP / 1.1快,或者最快速度与HTTP / 1.1一样快。但是为什么在20KB和50KB的测试运行中,HTTP / 2减慢了20%以上。有谁知道原因是什么?
我在服务器端使用nginx 1.10.0。 在客户端铬。延迟:50ms。丢包率很低。
答案 0 :(得分:0)
我刚刚使用Jetty进行测试(免责声明,我是HTTP / 2 Jetty维护者)。
Jetty 9.4.2,JDK 8u121,模拟网络往返50毫秒(通过tc
)。
20张图片,每张2k:
HTTP/1.1: ~275 ms
HTTP/2: ~170 ms
HTTP/2 Push: ~155 ms
20张图片,每张20k:
HTTP/1.1: ~380 ms
HTTP/2: ~200 ms
HTTP/2 Push: ~155 ms
20张图片,每张50k:
HTTP/1.1: ~380 ms
HTTP/2: ~220 ms
HTTP/2 Push: ~155 ms
除了这个快速测试之外,我们的经验是HTTP / 2多路复用在减少最终用户的延迟方面确实有效。 HTTP / 2与HTTP / 2推送甚至更好。 您可以在线找到大量的HTTP / 2演示证实了这一点。
上面的快速测试代码可以找到here。
我怀疑它可能是一些nginx问题,可能与流量控制有关(因为只有较大的图像尺寸才会出现问题)。
答案 1 :(得分:0)
在我看来,
由其机制决定的 HTTP/2 在满足这些条件(但不限于)时显示出比 HTTP/1.1 的速度优势:
如果上述大多数条件都没有满足(例如下载单个大文件),那么 HTTP/2 的性能可能比 HTTP/1.1 差。