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


当前回答

要真正理解HTTPS如何增加延迟,您必须了解HTTPS连接是如何建立的。这是一个很好的图表。关键在于,客户端不是在2个“腿”(一个往返,你发送一个请求,服务器发送一个响应)后才获得数据,而是至少要到4个“腿”(2个往返)后才能获得数据。因此,如果一个数据包在客户端和服务器之间移动需要100毫秒,那么您的第一个HTTPS请求至少需要500毫秒。

当然,这可以通过重新使用HTTPS连接来缓解(浏览器应该这样做),但它确实解释了加载HTTPS网站时的部分初始停滞。

其他回答

HTTP和HTTPS性能比较

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

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

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

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

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

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

一个更重要的性能差异是HTTPS会话在用户连接时保持打开。一个HTTP“会话”只持续一个项目请求。

如果你正在运行一个有大量并发用户的网站,预计会购买大量内存。

目前最上面的答案并不完全正确。

正如其他人在这里指出的,https需要握手,因此需要更多的TCP/IP往返。

在WAN环境中,延迟通常成为限制因素,而不是服务器上增加的CPU使用量。

请记住,从欧洲到美国的延迟大约是200毫秒(往返时间)。

您可以使用HTTPWatch轻松地测量这一点(对于单个用户情况)。

2014年12月更新

您可以使用AnthumChris的HTTP vs HTTPS测试网站在自己的浏览器中轻松测试HTTP和HTTPS性能之间的差异:“此页面测量其在不安全的HTTP和加密的HTTPS连接上的加载时间。这两个页面都加载了360张独特的非缓存图像(总计2.04 MB)。”

结果可能会让你大吃一惊。

拥有最新的HTTPS性能知识是很重要的,因为让我们加密证书权威机构将在2015年夏天开始发布免费、自动化和开放的SSL证书,这要感谢Mozilla、Akamai、Cisco、电子前沿基金会和IdenTrust。

2015年6月更新

Let 's Encrypt更新-到2015年9月:

Let’s Encrypt Launch Schedule(2015年6月16日) 让我们加密根证书和中间证书(2015年6月4日) Let's Encrypt订阅协议草案(2015年5月21日)

更多推特信息:@letsencrypt

有关HTTPS和SSL/TLS性能的更多信息,请参阅:

TLS快吗? 高性能浏览器网络,第4章:传输层安全 超频SSL SSL处理的解剖和性能

有关使用HTTPS的重要性的更多信息,请参阅:

为什么什么都用HTTPS ?(仅https标准) Let 's Encrypt(互联网安全研究组) HTTPS无处不在(电子前沿基金会)

总而言之,让我引用Ilya Grigorik的话:“TLS只有一个性能问题:它的应用不够广泛。其他一切都可以优化。”

感谢Chris (HTTP vs HTTPS测试基准的作者)在下面给出的评论。

这里似乎有一个令人讨厌的边缘情况:Ajax胜过拥塞的wifi。

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