为什么HTTPS比HTTP性能要差
HTTPS在进行数据传输前,需要进行握手,其中需要涉及到各种加密算法,握手过程中最耗时的地方在ServerKeyExchange,它对性能的影响占了75%左右。
- 证书校验:RSA,ECDSA
- 非对称密钥交换:RSA,ECDHE_RSA
- 对称加解密:RC4,3DES,AES,AESGCM
- 消息认证码:SHA
选择合适的算法
- 证书校验:ECDSA>RSA
- 非对称密钥交换:ECDHE_RSA>RSA
- 对称加解密:2010年之后的Intel CPU支持AES-NI加密,可提升加解密速度
会话复用
使用Session ID或者Session Ticket实现会话复用,减少握手次数。
将耗时的算法分离出去
服务器安装专用的SSL/TLS硬件加速卡或者将消耗CPU大的算法转移到其它机器,降低CPU消耗。
TLS False Start
启用TLS False Start可以节省一个RTT时间,但是客户端和服务端都需要支持NPN/ALPN,需要采用支持前向保密的密码套件,即使用ECDHE进行密钥交换。
SPDY/HTTP2
SPDY/HTTP2通过多路复用技术减少了握手次数。