HTTP与HTTPS性能比较

388
HTTP和HTTPS在性能方面有什么主要差异吗?我记得曾经读过HTTPS可能只有HTTP的五分之一快。这个说法对于当前的网络服务器/浏览器是否仍然有效?如果是,是否有任何支持它的白皮书?

1
你还应该了解一下HTTP2,目前浏览器只支持在HTTPS下使用。https://zh.wikipedia.org/wiki/HTTP/2 - Luca Steeb
3
“https” 比 “http” 慢(或慢很多) 。 - i486
如果有一些透明缓存发生(例如Squid),那么它可能是重要的。协议本身,我不认为它具有很大的开销。 - Rolf
22个回答

3
我进行了一个小实验,对于同一张来自flickr的图像(233KB),HTTPS和HTTP之间存在16%的时间差异:
HTTP链接:http://farm8.staticflickr.com/7405/13368635263_d792fc1189_b.jpg
HTTPS链接:https://farm8.staticflickr.com/7405/13368635263_d792fc1189_b.jpg 如此的数字当然取决于很多因素,比如电脑性能、网络连接速度、服务器负载、路径服务质量等等,但是它表明一个普遍的观念:HTTPS比HTTP慢,因为它需要更多的操作才能完成(SSL握手和编码/解码数据)。

6
无法基于两个请求(每个请求一个)创建统计分析指标。 - Tom Roggero

3

2

2
HTTP与HTTPS性能比较
我一直认为使用HTTPS会使页面加载速度变慢,相比于普通的HTTP。作为一个网页开发者,网页性能对我来说非常重要,任何可能降低网页性能的因素都是不可接受的。
为了了解涉及的性能影响,下面的图表基本介绍了当您使用HTTPS请求资源时,在幕后发生了什么。

enter image description here

从上图中可以看出,使用HTTPS与使用纯HTTP相比需要进行一些额外的步骤。当您使用HTTPS发出请求时,需要进行握手以验证请求的真实性。与HTTP请求相比,这个握手是一个额外的步骤,会产生一些开销。
为了了解性能影响并亲自查看性能影响是否显著,我使用此站点作为测试平台。我前往webpagetest.org并使用可视化比较工具来比较使用HTTPS和HTTP加载此站点。
正如您可以从这里的测试视频结果中看到的那样,使用HTTPS确实对我的页面加载时间产生了影响,但差异微不足道,我只注意到了300毫秒的差异。需要注意的是,这些时间取决于许多因素,例如计算机性能、连接速度、服务器负载和距离服务器的距离。
您的网站可能会有所不同,因此测试您的网站并检查切换到HTTPS所涉及的性能影响非常重要。

1
总的来说,这个例子很好,但实际上比描述的更复杂,特别是在完美前向保密方面。此外,实际上有四个对称密钥在使用中。 - zaph

2

这里似乎存在一个棘手的边缘情况:拥塞的wifi上的Ajax。

Ajax通常意味着KeepAlive在20秒后超时。然而,wifi意味着(理想情况下快速的)ajax连接必须进行多次往返。更糟糕的是,wifi经常丢失数据包,并且存在TCP重传。在这种情况下,HTTPS表现非常糟糕!


2

我发现简化的图表有帮助,但也有点不足。我认为要更好地理解 HTTP 的往返次数,可以参考这个页面:http://blog.catchpoint.com/2010/09/17/anatomyhttp/ 对于 HTTPS,据我所知,会增加一个往返。 - Elliptical view

0

HTTPS确实会影响页面速度...

上述引用揭示了许多人对网站安全和速度的愚蠢认识。HTTPS/SSL服务器握手在建立Internet连接时会产生初始停顿。在您的访问者浏览器屏幕上开始呈现任何内容之前,会有一个缓慢的延迟。这种延迟以“Time-to-First-Byte”信息来衡量。

HTTPS握手开销出现在“Time-to-First-Byte”信息(TTFB)中。常见的TTFB范围从100毫秒以下(最佳情况)到1.5秒以上(最坏情况)。但是,当然,使用HTTPS会更差500毫秒。

往返,无线3G连接可能需要500毫秒或更长时间。额外的往返行程会将延迟加倍,达到1秒或更长时间。这对移动性能有很大的负面影响。非常糟糕的消息。

我的建议是,如果您不交换敏感数据,则根本不需要SSL,但如果您像电子商务网站一样需要交换敏感数据,则可以仅在登录和结账等某些页面上启用HTTPS。

来源:Pagepipe


0

几乎可以肯定,因为SSL需要额外的加密步骤,而非SSL HTTP则不需要。


2
这两种情况之间的性能存在差异。 - David The Man
2
但问题是,“HTTP和HTTPS之间的性能是否存在重大差异?” - Sklivvz

0

HTTPS具有加密/解密开销,因此它始终会稍微慢一些。 SSL终止非常消耗CPU资源。如果您有设备可以卸载SSL,则根据服务器负载情况,延迟差异可能几乎不可察觉。


0

有一种方法可以衡量这个。Apache 的工具 jmeter 可以测量吞吐量。如果您使用 jmeter 在受控环境下设置大量的服务采样,包括 SSL 和非 SSL,您应该能够得到相对成本的准确比较。我很想知道您的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接