HTTPS 慢?先把 TCP、TLS、TTFB 分开看
别把三类延迟混成一个数字,否则永远找不到瓶颈。
一次请求的三段耗时
一次 HTTPS 请求至少包含三段:TCP 建连(一次往返)、TLS 握手(一到两次往返)、以及服务端处理时间。三段里任何一段慢,体感都是"网站慢"。
用 curl -w 可以把它们拆开打印。打印模板里各自取 time_connect、time_appconnect、time_starttransfer、time_total 这几个变量。
各段慢分别意味着什么
time_connect 大:网络路径问题,或者目标服务器在大洋彼岸。
time_appconnect 与 time_connect 的差值大:TLS 握手慢,可能是证书链太长、或者服务端在做耗时操作。
time_starttransfer 与 time_appconnect 的差值大:这是服务端处理时间,问题在后端。
一个容易忽略的优化
TLS 握手需要额外往返,启用会话复用能省掉大部分重复握手。再进一步是开启 TLSv1.3,它在多数场景下能把握手压到一次往返。