网站响应时间过长怎么优化?先把定义对齐
「响应时间」这四个字,十个人有五种理解。
有人指 TTFB,有人指页面完全加载,有人指接口返回。定义不一样,优化方向就是反的。
先统一口径
技术上说的响应时间,一般指首字节时间(TTFB):从发出请求到收到第一个字节。
用户感知的是「白屏多久」,包含了下载 HTML、加载 CSS、执行 JS、渲染。两者相关,但不是一回事。
所以优化之前先问一句:你说的慢,是拨测显示慢,还是用户看着慢?答案不同,后面完全不同。
五段拆开,各查各的
DNS 段高:解析慢,看 TTL、CNAME 链、DNS 服务商。典型症状是第一次打开慢,之后正常。
TCP 段高:线路问题,跨国跨网绕路。
TLS 段高:证书链不全、加密套件太老、没开 session 复用。
TTFB 高:服务端算得慢,这是优化的主战场。
下载段高:内容太大、没开压缩、带宽不够。
给一组参考阈值
TTFB 200ms 以内算健康,200 到 500 可以接受,超过 500 该查了,超过 1 秒基本是用户能感觉到的卡。
这是经验值,不是标准。电商和内部系统的要求不一样,但量级大致如此。
优化顺序,按性价比排
第一是缓存。页面缓存、对象缓存、OPcache,效果立竿见影,改动最小。很多站 TTFB 从 800ms 降到 100ms,就是加了一层缓存。
第二是 SQL 和索引。慢查询日志开起来,找出耗时最长的几条,补索引或者改写法。
第三是外部调用。第三方接口必须设超时和降级,不然对方一慢,你的站跟着慢。
最后才是扩容。前面三步没做完就加机器,是在为低效买单。
别忘了测量误差
单次测速结果会抖,尤其是跨网节点。连测三次看中位数,比盯着一次的最慢值有意义。
五段耗时在 网站测速 的结果里分列显示,先看哪一段突出,再决定往哪儿使劲。