为什么HTTP/2比普通HTTPS慢?

Xtr*_*der 17 performance http2

我正在评估从HTTP2到HTTP2的性能和获得奇怪的结果我可以从我的网站获得的东西 - 欧洲的网站是从美国加载的:

  • 使用HTTP/2 - 在6-7秒内
  • 使用普通HTTPS - 5-6秒(大约快1秒)

我从Chrome的网络监视器捕获屏幕截图,看起来像HTTP/2,大多数资源是一个接一个地加载而不是并行加载,就像普通SSL一样.

为了测试,我使用Apache 2.4.17(Win32)所涵盖的Web应用程序作为代理(以应用对SSL和HTTP/2协议的支持).客户端浏览器是Windows 7上的Chrome 46.0.2490.86.

捕获的网络请求如下.简短摘要:1.第一拳 - 是HTML页面2.下一组 - 6个请求 - 直接在HTML中声明的资源3.其余 - 通过脚本动态添加的资源(文档/头部中的'script'和'link/css'标签) .

图片的左侧是HTTP/2,右侧 - 通过普通SSL(http2_module已关闭)的相同工作人员.

在此输入图像描述


更新:我测试了支持HTTP/2作为反向代理的"其他东西".它来自http://nginx-win.ecsds.eu的 nginx 1.9.7.1 Kitty - 原始nginx的分支'for windows'.原始nginx中的HTTP/2仅在商业版中可用,因此我无法尝试.看起来没有其他服务器实现HTTP/2 +反向代理可用于Windows,或者我找不到它们(列表在这里这里).

我在Kitty中得到的结果更具误导性 - 没有像Apache那样的"顺序加载"资源,但是传输速率比HTTP/2慢两倍于普通SSL.最终结果是 - HTTP/2明显慢于普通SSL.以下是所有这些并排.

在所有这些中,我只能假设性能强烈依赖于实现,并且当前可用的实现执行奇怪,以得出关于HTTP/2的任何一致的结论.

在此输入图像描述

Xtr*_*der 5

因此,最后我的决定是-HTTP / 2本身没有任何问题,当前可用的实现有问题。

  • Apache HTTPD 2.4.17 / Win32-具有一些奇怪的“顺序加载”效果
  • nginx Kitty-提供极慢的传输速率
  • 官方免费软件nginx没有内置的http2模块

两者均显示出预期的性能。这是“问题”中执行的相同测试的屏幕截图,但此处的另一个人的Linux计算机上托管了Apache反向代理。

在此处输入图片说明