HTTPS对网站性能SEO有什么影响?

分类: 武汉整站优化 发布时间: 2020-09-30 05:00
文章目录
  • 进一步阅读:

1引言

HTTPS在保护用户隐私和防止流量劫持中扮演着非常重要的角色。同时,HTTPS还会降低用户访问速度并增加网站服务器的计算资源消耗。

本文主要介绍https对用户体验的影响。

本文最早发表在百度运维部的官方博客上

2 HTTPS对访问速度的影响

在介绍速度优化策略之前,让我们看一下HTTPS对速度的影响。影响主要来自两个方面:

1.通过协议交互添加的网络RTT(往返时间)。

2.与加密和解密有关的计算非常耗时。

让我们分别介绍它们。

2.1增加网络时间

由于HTTP和HTTPS都需要DNS解析,并且在大多数情况下都使用DNS缓存,因此为了突出显示比较效果,可以忽略主域名的DNS解析时间。

当用户使用HTTP协议访问http://www.baidu.com(或www.baidu.com)时,以下网络上会发生耗时的交互:

可以看出,用户只需要完成TCP三向握手即可建立TCP连接,直接发送HTTP请求来获取应用层数据。另外,在整个访问过程中无需消耗计算资源。

接下来,查看HTTPS访问过程。与HTTP相比,它要复杂得多。在某些情况下,使用HTTPS访问可能会添加7个RTT。如下所示:

第一个HTTPS请求所需的网络时间解释如下:

1.三向握手建立一个TCP连接。需要一个RTT。

2.使用HTTP发起GET请求,服务器返回302跳转到https://www.baidu.com。需要一个RTT和302跳跃延迟。

a)在大多数情况下,用户不会手动输入https://www.baidu.com来访问HTTPS,并且服务器只能返回302以强制浏览器跳至https。

b)浏览器处理302跳转也需要时间。

3.三向握手重新建立TCP连接。需要一个RTT。

a)302跳转到HTTPS服务器后,由于端口和服务器不同,您需要再次完成三向握手以建立TCP连接。

4. TLS完成第一阶段的握手。它至少需要一个RTT。

a)这个阶段主要是完成加密套件的协商和证书认证。

b)服务器和浏览器将协商相同的密钥交换算法,对称加密算法,内容一致性检查算法,证书签名算法,椭圆曲线(非ECC算法不需要)等。

c)浏览器获得证书后,需要验证证书的有效性,例如证书是否已过期以及是否被吊销。

5.解析CA站点的DNS。需要一个RTT。

a)浏览器获得证书后,可能需要启动OCSP或CRL请求以查询证书的状态。

b)浏览器首先在证书中获取CA域名。

c)如果未命中缓存,则浏览器需要解析CA域名的DNS。

6.三向握手建立CA站点的TCP连接。需要一个RTT。

a)DNS解析为IP后,需要完成三向握手以建立TCP连接。

7.发起OCSP请求并获得响应。需要一个RTT。

8.完成第二阶段的握手,这需要RTT和计算时间。

a)完整握手的第二阶段主要是密钥协商。

9.完整的握手结束后,将在浏览器和服务器之间执行应用程序层(即HTTP)数据传输。

当然,并非每个请求都需要添加7个RTT来完成第一个HTTPS请求交互。可能仅需要少于0.01%的请求才能完成上述步骤,并且它们需要满足以下条件:

1.必须是第一个请求。也就是说,对于在建立TCP连接之后启动的第一个请求,该连接上的后续请求不需要具有上述行为。

2.必须进行完整的握手,在正常情况下,80%的请求可以实现简化的握手。

3.浏览器需要启用OCSP或CRL功能。 Chrome默认情况下会关闭ocsp功能,默认情况下会同时启用firefox和IE。

4.浏览器未命中OCSP缓存。 Ocsp的一般更新周期为7天,firefox的查询周期也为7天,也就是说,在7天中仅发生一次ocsp查询。

5.浏览器未访问CA站点的DNS缓存。仅当缺少DNS缓存时,才会解析CA的DNS。

2.2增加计算时间

上一节仅简要描述了必须在HTTPS关键路径上消耗的纯网络时间,并且没有包括消耗CPU资源的计算时间。实际上,从浏览器和服务器的角度来看,计算时间并不小(30ms以上)。

1.浏览器计算耗时

a)RSA证书签名验证,浏览器需要解密签名并计算证书哈希值。如果有多个证书链,则浏览器需要验证多个证书。

b)在RSA密钥交换过程中,需要使用证书公钥对premaster进行加密。耗时相对较小,但是如果手机的性能相对较差,则也可能需要1ms。

c)在ECC密钥交换期间,需要计算椭圆曲线的公钥和私钥。

d)在进行ECC密钥交换时,需要对证书公钥进行解密以获得服务器发送的ECC公钥。

e)在ECC密钥交换期间,需要根据服务器公钥来计算主密钥。

f)应用层数据的对称加密和解密。

g)应用层数据一致性验证。

2.服务器端计算很耗时

a)RSA密钥交换要求使用证书私钥来解密预管理员。此过程非常消耗性能。

b)在ECC密钥交换期间,需要计算椭圆曲线的公钥和私钥。

c)在ECC密钥交换过程中,有必要使用证书私钥对ECC公钥进行加密。

d)在ECC密钥交换期间,需要基于浏览器公钥来计算共享主密钥。

e)应用层数据的对称加密和解密。

f)应用层数据一致性检查。

由于客户端CPU和操作系统的类型很多,因此无法概括计算时间。手机上的HTTPS计算将消耗更多性能,而简单计算所增加的延迟至少为50ms或更长。 PC端还将增加至少10ms的计算延迟。

服务器的性能通常更强,但是由于RSA证书私钥的长度比客户端的长度长得多,因此服务器的计算延迟将超过5毫秒。

进一步阅读:

  • HTTPS =更好的SEO?百度和谷歌怎么看?
  • 谈论HTTPS和SSL / TLS协议
  • 在网站上使用HTTPS的利弊分析和SEO建议
  • HTTPS对Google百度SEO有多大影响,我应该使用它吗?