最近给博客上了个人的ssl证书,但是配了https之后,反而访问速度更加慢了
通过阿里云的一次性拨测工具,测试全国各节点对于我的网站的访问速度,发现首包时间与下载时间比较长,加起来甚至能达到20000毫秒以上
使用cdn
CDN(内容分发网络) 的主要目的通常是 加速网站访问,但如果配置不当或场景不匹配,也可能导致访问速度变慢。
比如国内的网站不要使用cloudflare接管,老老实实用阿里云或者腾讯云,不然不仅慢的一批,有时候还连不上,甚至不如github page
TLS握手开销
HTTPS 在建立连接时需要进行 TLS 握手,涉及非对称加密计算(如 RSA、ECDHE),首次访问会多出 1-2 RTT(往返时间)
- 启用 TLS 会话恢复
1 | ssl_session_cache shared:SSL:50m; # 共享会话缓存 |
- 使用更高效的密钥交换算法:
优先选择 ECDHE-ECDSA
或 ECDHE-RSA
,避免使用 RSA
密钥交换(性能更低)。
- 开启 OCSP Stapling:
避免客户端单独验证证书状态,减少延迟:
1 | ssl_stapling on; |
加密算法选择
过时的加密套件(如 CBC 模式)或低效的算法会增加 CPU 负载。
- 优先使用 AES-GCM(支持硬件加速)和 ChaCha20-Poly1305(适合移动设备):
1 | ssl_ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384"; |
- 禁用不安全的算法(如 SSLv3、TLS 1.0/1.1)
只使用TLS1.2和1.3的算法
1 | ssl_protocols TLSv1.2 TLSv1.3; |
HTTP/2 支持
HTTP/2 的多路复用和头部压缩可显著提升速度。
1 | listen 443 ssl http2; # 添加 http2 标识 |
安全头(Security Headers)
影响:添加安全头(如 Content-Security-Policy
、X-Frame-Options
)通常只会增加几百字节的响应头大小,对速度影响微乎其微。
建议:合并重复的头设置,避免嵌套多次 add_header
。精简 CSP 策略,避免过度限制导致额外请求。
推荐的nginx模板(我现在使用的)
1 | server { |
优化完成前都是红的一圈,优化完成后都是绿的了