Performance 为什么HTTP/2比普通HTTPS慢?
我正在评估我的网站在性能方面可以从HTTP2获得什么,并得到奇怪的结果-欧洲的网站是从我们这里加载的:Performance 为什么HTTP/2比普通HTTPS慢?,performance,http2,Performance,Http2,我正在评估我的网站在性能方面可以从HTTP2获得什么,并得到奇怪的结果-欧洲的网站是从我们这里加载的: 使用HTTP/2-只需6-7秒 使用纯HTTPS-只需5-6秒(大约快1秒) 我从Chrome的网络监视器中截取了一些屏幕截图,看起来在HTTP/2中,大多数资源是一个接一个地加载的,而不是像普通SSL那样并行加载的 为了进行测试,我使用Apache2.4.17(Win32)覆盖的web应用程序作为代理(应用对SSL和HTTP/2协议的支持)。Windows 7上的客户端浏览器是Chrom
- 使用HTTP/2-只需6-7秒
- 使用纯HTTPS-只需5-6秒(大约快1秒)
更新:我已经测试了支持HTTP/2作为反向代理的“其他东西”。它是nginx 1.9.7.1 Kitty,源于原nginx“for windows”的-fork。原始nginx中的HTTP/2仅可用,因此我无法尝试。而且似乎没有其他适用于windows的HTTP/2+反向代理服务器实现,或者我就是找不到它们(列表和) Kitty的结果甚至更具误导性——没有像Apache中那样的“顺序加载”资源,但是HTTP/2上的传输速率比普通SSL慢两倍。最终的结果是-HTTP/2比普通SSL慢得多。下面是它们并排排列的 除此之外,我只能假设性能在很大程度上取决于实现,而当前可用的实现执行起来很奇怪,因此无法对HTTP/2做出一致的结论
所以,最后我的决定是——HTTP/2本身没有问题,当前可用的实现有问题
- ApacheHttpD2.4.17/Win32——有一些奇怪的“顺序加载”效果
- nginx Kitty-提供异常缓慢的传输速率
- 官方免费软件nginx没有内置http2模块
- 用于windows的自定义nginx,从
- ApacheHTTPD2.4.17/linux
看看这个,它是从淘宝网开发的nginx的一个修改版本,AliExpress和许多其他繁忙网站都使用它。它支持HTTP2开箱即用,还支持一些仅在商用nginx中可用的其他功能,如上游控制
我们正在使用http/2运行最新的nginx
nginx version: nginx/1.9.10
built with OpenSSL 1.0.2e 3 Dec 2015
TLS SNI support enabled
我们做了同样的观察。我们正在记录$request\u time和$upstream\u time。尽管无论协议如何,上游_时间都相等,但总体请求_时间不同:
# grep ' 443 ' access.log|grep 'HTTP/1.1'| cut -d ' ' -f 3,4 | awk '{r+=$1; u+=$2} END {print r/NR; print u/NR}'
0.0116887 # HTTP/1.1 request_time in seconds
0.00673473 # HTTP/1.1 upstream_time in seconds
# grep ' 443 ' access.log|grep 'HTTP/2.0'| cut -d ' ' -f 3,4 | awk '{r+=$1; u+=$2} END {print r/NR; print u/NR}'
0.0363673 # HTTP/2.0 request_time in seconds
0.00695812 # HTTP/2.0 upstream_time in seconds
因此,http/1.1的总请求时间是原来的三倍!可能由于流的原因,请求时间记录和http/2不能正常工作。我真的不知道,但承诺是,如果http/2都在TLS上运行,那么http/2比http/1.1更快
但我将对此进行进一步调查 响应标题是怎么说的?您是否绝对确定Apache已正确配置为发送HTTP/2?仅供参考,有些浏览器可能无法正确显示版本,请看。Chrome显示的响应标题对我来说没有任何用处:(.我非常确定HTTP/2真的是“开启”的,因为这个插件()显示HTTP/2图标,网络行为与普通SSL不同-只执行一次SSL握手。@XtraCoder只需右键单击devtools网络面板的标题,与所附的图中相同,然后查找“协议”但从图中可以明显看出,上半部分使用的是HTTP/2或SPDY。“协议”列说它是
h2
,第页chrome://net-internals/#http2
在单独的选项卡中打开,同时在另一个选项卡中加载站点,显示我的站点的协议协商=h1
和“活动流”的数量'加载时上升到5。…抱歉,请参阅我的评论中的打字错误-正确的措辞是'for my siteProtocol Agreemented=h2
'很好!感谢您提供此信息。应该尝试一下!