http和https在性能上有什么主要的区别吗?我似乎记得读到过HTTPS的速度是HTTP的五分之一。这对当前的web服务器/浏览器有效吗?如果有,是否有相关白皮书支持?


当前回答

考虑到SSL需要一个非sll HTTP不需要的额外加密步骤,这几乎肯定是正确的。

其他回答

我可以告诉你(作为一个拨号用户),通过SSL访问同一个页面要比通过常规HTTP慢几倍…

HTTPS requires an initial handshake which can be very slow. The actual amount of data transferred as part of the handshake isn't huge (under 5 kB typically), but for very small requests, this can be quite a bit of overhead. However, once the handshake is done, a very fast form of symmetric encryption is used, so the overhead there is minimal. Bottom line: making lots of short requests over HTTPS will be quite a bit slower than HTTP, but if you transfer a lot of data in a single request, the difference will be insignificant.

然而,keepalive是HTTP/1.1的默认行为,所以你会在同一个连接上进行一次握手,然后进行多次请求。这对HTTPS产生了重大影响。您可能应该对站点进行概要分析(正如其他人建议的那样)以确保这一点,但我怀疑性能差异不会很明显。

HTTP和HTTPS性能比较

与传统的HTTP相比,我总是将HTTPS与较慢的页面加载时间联系起来。作为一个网页开发人员,网页性能对我来说很重要,任何会降低我网页性能的东西都是禁忌。

为了理解所涉及的性能影响,下面的图向您提供了使用HTTPS对资源发出请求时的基本概念。

从上图中可以看出,与使用普通HTTP相比,使用HTTPS需要执行一些额外的步骤。当您使用HTTPS发出请求时,需要进行握手以验证请求的真实性。与HTTP请求相比,这个握手是一个额外的步骤,不幸的是会引起一些开销。

为了理解性能影响并亲自查看性能影响是否显著,我使用这个站点作为测试平台。我访问了webpagetest.org,并使用可视化比较工具来比较使用HTTPS和HTTP加载的站点。

正如您可以从这里看到的测试视频结果使用HTTPS确实对我的页面加载时间有影响,但差异是可以忽略不计的,我只注意到300毫秒的差异。需要注意的是,这些时间取决于许多因素,如计算机性能、连接速度、服务器负载以及与服务器的距离。

您的站点可能有所不同,因此彻底测试您的站点并检查切换到HTTPS所涉及的性能影响非常重要。

在许多情况下,SSL握手对性能的影响将由于SSL会话可以缓存在两端(桌面和服务器)而得到缓解。例如,在Windows机器上,SSL会话可以缓存长达10个小时。见http://support.microsoft.com/kb/247658/EN-US。一些SSL加速器还具有允许您优化会话缓存时间的参数。

另一个需要考虑的影响是,通过HTTPS提供的静态内容不会被代理缓存,这可能会降低通过同一个代理访问站点的多个用户的性能。这可以通过静态内容也会缓存到桌面的事实来缓解,Internet Explorer版本6和7缓存可缓存的HTTPS静态内容,除非另有指示(工具菜单/Internet选项/高级/安全/不将加密页面保存到磁盘)。

HTTPS确实会影响页面速度…

上面的引用揭示了许多人在网站安全和速度方面的愚蠢。HTTPS / SSL服务器握手会在进行互联网连接时造成初始停顿。在访问者的浏览器屏幕上开始呈现任何内容之前会有一个缓慢的延迟。这个延迟是用Time-to-First-Byte信息来衡量的。

HTTPS握手开销出现在时间到第一字节信息(TTFB)中。常见的TTFB范围从低于100毫秒(最好的情况)到超过1.5秒(最坏的情况)。但是,当然,使用HTTPS时,情况要差500毫秒。

无线3G连接的往返时间可以达到500毫秒甚至更多。额外的行程会使延迟加倍,达到1秒或更长时间。这对手机性能有很大的负面影响。非常坏的消息。

我的建议是,如果你不交换敏感数据,那么你根本不需要SSL,但如果你确实喜欢电子商务网站,那么你可以在某些交换敏感数据的页面上启用HTTPS,比如登录和结账。

来源:Pagepipe