网站打开慢,先查服务器还是先查网络:一份排查顺序
发布时间:2026-10-20 15:10(北京时间)|数据截至:2026-10-20|数据来源:智联海机器人资讯站点实测
一、先把两段时间分开
用户感觉的「慢」是两段时间之和:服务端生成时间(PHP 查库、拼 HTML)与链路时间(DNS、握手、传输)。两段混在一起谈,永远找不到原因。
| 测什么 | 怎么测 | 正常值 |
|---|---|---|
| 服务端时间 | 在服务器上 curl -w %{time_starttransfer} 请求本机 | 10–100ms |
| 链路时间 | 从访问者侧测同一地址 | 比服务端多 1–2 个 RTT |
如果本机首字节是 19ms、外部测出 2600ms,问题就不在代码里,别再优化 PHP 了。
二、再看握手
TLS 握手是独立成本。实测出现过这种情况:TCP 连接只要 7ms,TLS 握手却要 1.6 秒——差了两个数量级。常见原因有三个:
- 证书链不完整:只发了站点证书,中间证书缺失,浏览器要回源补链
- 没有启用 HTTP/2:协商不到 h2,几十个静态资源退化成串行
- 跨境链路:同城节点几十毫秒,跨境节点可到几百毫秒,且波动大
三、再数请求
一个内容页的合理请求数在 40 以内。超过 60 就要看是不是样式与脚本拆得太碎:每个 <link> 与 <script> 都是一次往返。合并样式是最安全的一种减法,因为合并只改传输层,不改级联顺序。
四、最后才谈压缩与预取
- gzip:文本类必开,HTML 从 300KB 压到 44KB 是常态
- 静态缓存:
/assets/、图片目录设 30 天,复访几乎零请求 - 悬停预取:鼠标移到链接就提前取下一页,点击时几乎瞬开
五、一个反例
我们做过一次「以为服务器慢」的排查:页面加载 8 秒,最后发现是页面里残留了一个已废弃的页脚模块,它带 8 个图标图和一个二维码生成接口,每张图都要 5 秒。把这个模块从服务端删掉,加载时间直接降到 7 秒以内,再做其它优化才有效。
先删无用的,再优化有用的。
六、什么时候该上 CDN
当服务端时间已经低于 100ms、请求数与体积都合理,而外部测速仍慢时,剩下的就是链路问题。这时自建优化已经到顶,只有 CDN 或就近节点能继续改善。
智联海