Lighthouse 里服务器响应时间 TTFB 一直卡在 900 毫秒 同一台机器上用 curl 请求首页也是 0.9 秒 换一个网络环境数字几乎没有变化。乍看像缓存或者权限的锅,追下去往往不是。

curl -so /dev/null -w '%{time_starttransfer}\n' example.com
curl -s -o /dev/null -w '%{time_namelookup}\n' example.com

追下去是这么回事:TTFB 里含 DNS 连接 排队和首字节返回三段 换网络不变说明不是链路问题 多半是服务端在返回首字节之前做了同步查询或者等缓存。

「TTFB 排查」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

具体做法是,用 curl 的 -w 参数拆出 DNS 连接和首字节三段各占多少时间;拿服务端日志里这次请求的处理耗时和 TTFB 对一遍 看差在哪段;首字节前串了数据库查询的 先加缓存或者改成异步生成页面。

验收就看一点,TTFB 降到 200 毫秒以内 和服务端日志里记录的处理时间基本能对得上。

作者 9823189