这个问题有一个非常简单的答案:对您特定情况下的网站性能进行分析,以查看使用HTTPS协议与HTTP相比的性能影响。 有很多工具可用于比较HTTP和HTTPS服务器的性能(如JMeter和Visual Studio),而且它们很容易使用。
没有人能在没有一些关于您的网站、硬件、软件和网络配置的信息的情况下给您有意义的答案。
就像其他人说的那样,加密会带来一定程度的开销,但它高度依赖于:
根据我的经验,重度使用动态内容的服务器受HTTPS的影响较小,因为加密时间(SSL开销)与生成内容的时间相比微不足道。
服务大量提供可以轻松缓存在内存中的静态页面的服务器遭受更高的开销(在一个案例中,“内部网络”的吞吐量减半)。
编辑:一些其他人提出的一个观点是SSL握手是HTTPS的主要成本。这是正确的,这就是为什么“典型的会话长度”和“客户端缓存行为”很重要的原因。
许多非常短的会话意味着握手时间将超过任何其他性能因素。较长的会话意味着握手成本将在会话开始时发生,但随后的请求将具有相对较低的开销。
客户端缓存可以在几个步骤中完成,从大规模代理服务器到单个浏览器缓存。通常情况下,HTTPS内容不会被缓存在共享缓存中(虽然一些代理服务器可以利用中间人类型的行为实现)。许多浏览器会在当前会话和经常性的情况下缓存HTTPS内容。未缓存或缓存较少的影响是客户端将更频繁地检索相同的内容。这会导致服务相同数量的用户需要更多的请求和带宽。
HTTPS需要进行初始握手,这可能会非常缓慢。握手时实际传输的数据量不大(通常少于5 kB),但对于非常小的请求来说,这可能是相当大的开销。然而,一旦完成握手,就会使用一种非常快速的对称加密形式,因此在那里的开销是最小的。底线是:通过HTTPS进行大量短请求将比HTTP慢得多,但如果您在单个请求中传输大量数据,则差异将不重要。
但是,在HTTP/1.1中,保持连接是默认行为,因此您将进行一次握手,然后在同一连接上进行许多请求。这对HTTPS有很大影响。您应该根据其他人建议,对您的站点进行分析以确保,但我怀疑性能差异不会显着。
这种开销并非由加密引起,对于现代CPU来说,SSL所需的加密处理是微不足道的。
这种开销源于SSL握手过程,该过程很漫长并且会显著增加HTTPS会话相比HTTP所需的往返次数。
通过使用工具(例如Firebug)测量页面加载时间, 在模拟高延迟链路的情况下进行测试。有一些模拟高延迟链路的工具—例如Linux上的 "netem"。将HTTP与在相同环境下的HTTPS进行比较。
可以通过以下方式在某种程度上缓解延迟问题:
您可以使用HTTP vs HTTPS Test网站(由AnthumChris创建)在自己的浏览器中轻松测试HTTP和HTTPS性能差异: “该页面测量其在不安全的HTTP和加密的HTTPS连接上的加载时间。两个页面都加载了360个独特的、非缓存的图像(总计2.04 MB)。"
结果可能会让你惊讶。
了解HTTPS性能的最新知识很重要,因为由于Mozilla、Akamai、Cisco、Electronic Frontier Foundation和IdenTrust的努力,Let’s Encrypt证书颁发机构将从2015年夏季开始发布免费、自动化和开放SSL证书。
Let’s Encrypt的最新消息-将于2015年9月到达:
更多信息请关注Twitter:@letsencrypt
有关HTTPS和SSL/TLS性能的更多信息,请参见:
了解更多有关使用HTTPS的重要性的信息请参见:
总之,让我引用Ilya Grigorik的话来概括:“TLS只有一个性能问题:它没有被广泛使用。其他一切都可以优化。”
感谢Chris——HTTP vs HTTPS Test基准测试的作者——对以下评论提供的意见。
除了之前提到的所有内容,还需要记住一些(全部?) Web浏览器由于安全原因不会将通过HTTPS获取的缓存内容存储在本地硬盘上。这意味着从用户的角度来看,在浏览器重新启动后,具有大量静态内容的页面将显示为加载较慢,并且从服务器的角度来看,通过HTTPS请求静态内容的请求量将高于HTTP。
作为一个拨号用户,我可以告诉你通过SSL访问同一页面比常规HTTP慢好几倍...