HTTPS性能下降主因是TLS握手延迟(占首屏损耗约80%)和CPU计算开销(占20%),优化需围绕减少RTT、复用连接、压低非对称加密计算、绑定CPU资源四点系统推进。

HTTPS 全站加密后,性能下降主要来自 TLS 握手延迟和加解密 CPU 开销。调优不是堆硬件,而是围绕“减少往返、复用连接、压低计算、绑定资源”四个关键点系统推进。
协议与加密套件:砍掉无效协商,聚焦高效路径
握手慢,核心是客户端和服务端反复试探兼容性。必须精简协议版本和加密套件,避免降级协商:
- 只启用 TLSv1.2 和 TLSv1.3,彻底禁用 TLSv1.0/v1.1 和所有 SSL 版本
- 优先使用 TLS 1.3 套件(如
TLS_AES_128_GCM_SHA256),再回退到 ECDHE+AES-GCM 或 ChaCha20-Poly1305 - 明确设置
ssl_prefer_server_ciphers off(TLS 1.3 下该指令自动失效,但显式声明可避免旧配置干扰) - 椭圆曲线强制指定
ssl_ecdh_curve X25519:secp384r1,跳过慢速曲线协商
会话复用与 OCSP Stapling:让每次连接都“省一步”
首次握手耗时高,后续连接应尽可能复用上下文。两项配置直接降低平均握手延迟:
- 开启共享会话缓存:
ssl_session_cache shared:SSL:50m,配合ssl_session_timeout 10m - 务必启用 OCSP Stapling:
ssl_stapling on; ssl_stapling_verify on;,搭配稳定 resolver(如resolver 8.8.8.8 1.1.1.1 valid=300s;) - 禁用 session tickets(
ssl_session_tickets off),避免票据泄露风险,且对复用率影响有限
CPU 亲和性与系统级协同:让加密运算“不迷路”
HTTPS 加密高度依赖 L1/L2 缓存和 TLB 热度。进程跨核迁移会导致缓存失效,实测可使 handshake 吞吐下降 30% 以上:
- Nginx 配置中启用自动绑核:
worker_processes auto;和worker_cpu_affinity auto; - 验证是否生效:
ps -eo pid,psr,comm | grep 'nginx: worker' | sort -k2,2n,输出中每个 worker PID 应唯一对应一个 PSR 号 - 同步调高系统限制:
ulimit -n 65536、net.core.somaxconn = 65535、vm.swappiness = 1 - 确认 CPU 支持 AES-NI:
grep -o aesni /proc/cpuinfo,有输出即启用成功,无需额外操作
HTTP/2 与安全头:在传输层和响应层同时提效
HTTP/2 不仅提升并发能力,还能通过头部压缩和单连接多路复用减少 TLS 层压力:
- 监听配置必须包含
http2:listen 443 ssl http2 reuseport; - 添加 HSTS 头强制浏览器长期走 HTTPS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - 基础防护头不可少:
X-Content-Type-Options、X-Frame-Options、Referrer-Policy - 私钥权限严格设为
600,证书链文件(fullchain.pem)须含中间证书,否则移动端易校验失败



















