新型SEO思维就是从一个全新的层次上提升seo优化的水平,达到网络信息最佳化的展示效果!
马海祥博客 > SEO优化 > SEO研究院 > HTTPS对网站性能优化的影响

HTTPS对网站性能优化的影响

时间:2016-01-24   文章来源:马海祥博客   访问次数:

如今,越来越多的网站和服务开始启动加密,HTTPS加密Web流量占到总流量的一半,其中YouTube这样的流媒体网站首次有50%的流量是经过HTTPS,这一切证明了Web的完整加密是可行的。

百度自2014年底起,开始对部分地区开放了HTTPS加密搜索服务,如今百度已全站开启了HTTPS安全加密搜索,那么,我们该如何看待百度全站采用HTTPS加密搜索呢?

HTTPS对网站性能优化的影响-马海祥博客

HTTPS在保护用户隐私,防止流量劫持方面发挥着非常关键的作用,但与此同时,HTTPS也会降低用户访问速度,增加网站服务器的计算资源消耗。

百度在工程开发上几乎不做没有性价比的事情,所以我们先看看https这个事情在技术上的投入在哪里?

一、百度启用了HTTPS加密搜索

从2014年底开始,百度在部分地区开始对其搜索启用了HTTPS加密(VeriSign签发的证书),百度HTTPS相关负责人指出,此举致力于为用户提供一个安全可靠的网络环境(具体可查看马海祥博客《HTTP与HTTPS的区别》的相关介绍)。

HTTPS对网站性能优化的影响-马海祥博客

当你网购的时候,你输入银行信息后按继续,在与银行网站对接的过程中,你的付款信息在网络传输过程中,是被加密的,这是为了确保使客户与服务器应用之间的通信不被攻击者窃听。

二、在性能方面的影响

1、多几次握手,网络耗时变长,用户从http跳转到https还要一点时间。

2、机器性能,https要多做一次RSA校验。

3、CDN,全国所有节点要支持https才行,另外,如果面对DDOS,https的解决方案也会复杂得多。

三、对周边系统的影响

1、页面里所有嵌入的资源都要改成https的,这些资源可能会来自不同的部门甚至不同的公司,包括:图片、js、form表单等等,否则浏览器就会报警。

2、手机百度这类使用了百度搜索服务的客户端产品,也可能要修改。

3、解决第三方网站看不到refer的问题。

4、所有的开发、测试环境都要做https的升级。

还有,上线前肯定是一大堆预案,保证切换过程顺畅,所以说下来,https这个事情的投入真心很大,不是说换就换的。

好了,这个事情的收益在哪里呢?在马海祥看来,就是用户的搜索安全,至于原因可能有以下几点:

1、被运营商强插广告,甚至在正常结果前面插一条广告。

2、有的时候劫持代码还会写错,导致用户访问白屏或者报错。

3、手机上被浏览器或者什么卫士篡改或者劫持。

4、最恶心的是泄露用户数据,经常在网上看到说:“我用百度搜了一个黄金,马上就有人联系我了”“我在百度上搜了一种病,马上医院就来电话了”。

5、另外,对百度的收入也有影响、有不少公共wifi自动会自动给百度搜索加一个联盟的计费id。

其实在搜索HTTPS很久之前,百度就做了搜索结果url加密,我想应该是基于类似的考虑。

很多互联网公司在做大的时候都会遇到这个问题:https成本高,速度又慢,规模小的时候在涉及到登录和交易用上就够了,做大以后遇到信息泄露和劫持,想整体换,代价又很高。

四、HTTPS对访问速度的影响

在介绍速度优化策略之前,先来看下HTTPS对速度有什么影响,在马海祥看来,其影响主要来自两方面:

①、协议交互所增加的网络RTT(round trip time)。

②、加解密相关的计算耗时。

卡内基梅隆大学、西班牙电信和都灵理工大学的研究人员在ACM CoNEXT上发表了一篇论文(PDF),量化了网站从HTTP切换到HTTPS所付出的代价。

研究人员分析了启用加密对延迟、消耗数据和客户端电池寿命的影响,他们发现,HTTPS的“S”会使得页面加载时间增加了50%,增加10%到20%的耗电,此外,HTTPS还会影响缓存增加数据开销和功耗,以及父母控制和病毒扫描等也会受到影响(具体可查看马海祥博客《从SEO的角度来分析网站是否该采用HTTPS协议》的相关介绍)。

下面马海祥分别跟大家介绍一下:

1、网络耗时增加

由于HTTP和HTTPS都需要DNS解析,并且大部分情况下使用了DNS缓存,为了突出对比效果,忽略主域名的DNS解析时间。

用户使用HTTP协议访问http://www.mahaixiang.cn(或者www.mahaixiang.cn)时会有如下网络上的交互耗时:

HTTPS对网站性能优化的影响-马海祥博客

可见,用户只需要完成TCP三次握手建立TCP连接就能够直接发送HTTP请求获取应用层数据,此外在整个访问过程中也没有需要消耗计算资源的地方。

接下来看HTTPS的访问过程,相比HTTP要复杂很多,在部分场景下,使用HTTPS访问有可能增加7个RTT,如下图:

HTTPS对网站性能优化的影响-马海祥博客

HTTPS首次请求需要的网络耗时解释如下:

①、三次握手建立TCP连接,耗时一个RTT。

②、使用HTTP发起GET请求,服务端返回302跳转到https://www.mahaixiang.cn,需要一个RTT以及302跳转延时。

a、大部分情况下用户不会手动输入https://www.mahaixiang.cn来访问HTTPS,服务端只能返回302强制浏览器跳转到https。

b、浏览器处理302跳转也需要耗时。

③、三次握手重新建立TCP连接,耗时一个RTT。

302跳转到HTTPS服务器之后,由于端口和服务器不同,需要重新完成三次握手,建立TCP连接。

④、TLS完全握手阶段一,耗时至少一个RTT。

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

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

c、浏览器获取到证书后需要校验证书的有效性,比如是否过期,是否撤销。

⑤、解析CA站点的DNS,耗时一个RTT。

a、浏览器获取到证书后,有可能需要发起OCSP或者CRL请求,查询证书状态。

b、浏览器首先获取证书里的CA域名。

c、如果没有命中缓存,浏览器需要解析CA域名的DNS。

⑥、三次握手建立CA站点的TCP连接,耗时一个RTT。

DNS解析到IP后,需要完成三次握手建立TCP连接。

⑦、发起OCSP请求,获取响应。耗时一个RTT。

⑧、完全握手阶段二,耗时一个RTT及计算时间。

完全握手阶段二主要是密钥协商。

⑨、完全握手结束后,浏览器和服务器之间进行应用层(也就是HTTP)数据传输。

当然不是每个请求都需要增加7个RTT才能完成HTTPS首次请求交互,据马海祥了解,大概只有不到0.01%的请求才有可能需要经历上述步骤,它们需要满足如下条件:

①、必须是首次请求,即建立TCP连接后发起的第一个请求,该连接上的后续请求都不需要再发生上述行为。

②、必须要发生完全握手,而正常情况下80%的请求能实现简化握手。

③、浏览器需要开启OCSP或者CRL功能,Chrome默认关闭了ocsp功能,firefox和IE都默认开启。

④、浏览器没有命中OCSP缓存,Ocsp一般的更新周期是7天,firefox的查询周期也是7天,也就说是7天中才会发生一次ocsp的查询。

⑤、浏览器没有命中CA站点的DNS缓存,只有没命中DNS缓存的情况下才会解析CA的DNS。

2、计算耗时增加

上节还只是简单描述了HTTPS关键路径上必须消耗的纯网络耗时,没有包括非常消耗CPU资源的计算耗时,事实上计算耗时也不小(30ms以上),从浏览器和服务器的角度分别介绍一下:

①、浏览器计算耗时

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

b、RSA密钥交换时,需要使用证书公钥加密premaster,耗时比较小,但如果手机性能比较差,可能也需要1ms的时间。

c、ECC密钥交换时,需要计算椭圆曲线的公私钥。

d、ECC密钥交换时,需要使用证书公钥解密获取服务端发过来的ECC公钥。

e、ECC密钥交换时,需要根据服务端公钥计算master key。

f、应用层数据对称加解密。

g、应用层数据一致性校验。

②、服务端计算耗时

a、RSA密钥交换时需要使用证书私钥解密premaster,这个过程非常消耗性能。

b、ECC密钥交换时,需要计算椭圆曲线的公私钥。

c、ECC密钥交换时,需要使用证书私钥加密ECC的公钥。

d、ECC密钥交换时,需要根据浏览器公钥计算共享的master key。

e、应用层数据对称加解密。

f、应用层数据一致性校验。

由于客户端的CPU和操作系统种类比较多,所以计算耗时不能一概而论,手机端的HTTPS计算会比较消耗性能,单纯计算增加的延迟至少在50ms以上,PC端也会增加至少10ms以上的计算延迟。

服务器的性能一般比较强,但由于RSA证书私钥长度远大于客户端,所以服务端的计算延迟也会在5ms以上。

五、HTTPS协议为何没在互联网上全面采用?

很多人会有一个疑问:https够不够呢?肯定是不够的,但是没有更好的方案了,可为什么更安全的HTTPS协议没有在互联网上全面采用呢?简单来说,有以下几点:

1、SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

2、SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。(SSL有扩展可以部分解决这个问题,但是比较麻烦,而且要求浏览器、操作系统支持,Windows XP就不支持这个扩展,考虑到XP的装机量,这个特性几乎没用。)

3、HTTPS连接缓存不如HTTP高效,大流量网站如非必要也不会采用,流量成本太高。

4、HTTPS连接服务器端资源占用高很多,支持访客稍多的网站需要投入更大的成本,如果全部采用HTTPS,基于大部分计算资源闲置的假设的VPS的平均成本会上去。

5、HTTPS协议握手阶段比较费时,对网站的相应速度有负面影响,如非必要,没有理由牺牲用户体验。

6、最关键的,SSL证书的信用链体系并不安全,特别是在某些国家(你们懂的)可以控制CA根证书的情况下,中间人攻击一样可行。

另外,在客户端被植入无数后门、木马的状况下,HTTPS连接的作用非常有限,这也许是支付宝不可能像PayPal那么易用的原因之一。

马海祥博客点评:

HTTPS是超文本传输协议,是HTTP的加密版和安全版,或者说搜索引会认为这种“带锁”的页面,这种页面一般用于银行、金融、网上支付对通讯安全要求较高的网站,搜索引擎并不太喜欢收录这些页面,可能只收录一些重要的页面,所以说全站HTTPS对SEO影响很大,搜索引擎还不能很好的收录HTTPS协议页面。

鉴于此,你可以分别使用HTTP和HTTPS,对于想要收录和排名的页面使用HTTP,或者网站上一些重要的页面,比如:首页,业务介绍页面等,可以允许HTTP形式也可以访问。

本文为马海祥博客原创文章,如想转载,请注明原文网址摘自于http://www.mahaixiang.cn/seoyjy/1422.html,注明出处;否则,禁止转载;谢谢配合!

相关热词搜索: 网站优化 https

上一篇:404 Not Found错误页面是什么?
下一篇:没有了

今日话题更多>

SEO研究院 更多 >>