不测量就优化,等于闭眼开车。
这是「WordPress 性能优化实录」系列的第一篇。整个系列五篇正文,但在动手之前请先把这篇看完 —— 因为它决定了你后面所有优化到底有没有用。
我见过太多人(包括我自己)一上来就装缓存插件、换轻量主题、升级 VPS,折腾一圈发现「好像快了一点,但不知道是不是错觉」。原因很简单:没测过,就不知道瓶颈在哪;不知道瓶颈,改动就是碰运气。
1、一个页面请求,要经过好几层
访客点开一个页面,请求依次经过:
- 浏览器(DNS 解析 → TCP 建连 → TLS 握手)
- CDN / 边缘节点(有缓存就直接返回,压根不回源)
- 你的服务器(nginx)
- 页面缓存(命中就发静态 HTML,否则交给 PHP)
- PHP + 数据库(现场渲染)
任何一层慢,表现出来都是「网页打开慢」,但要改的东西完全不同:

这张图是整个系列的地基:请求停得越靠上,就越快。所以第一步不是优化,而是搞清楚自己的请求停在哪一层。
2、先看三个数字
不用一上来就上 Lighthouse,先看这三个就够定位了:
| 数字 | 是什么 | 怎么算好 |
|---|---|---|
| TTFB(首字节时间) | 从发起请求到收到第一个字节 | 静态页 < 100ms;缓存页 < 300ms;超过 1 秒说明后端或跨境有问题 |
| 页面总字节数 | HTML + CSS + JS + 图片 | 文章页 < 500KB 算轻;超过 2MB 基本都是图片没优化 |
| 请求数 | 打开一个页面发了多少个请求 | < 50 个算健康;上百个通常是插件、统计代码、字体堆出来的 |
这三个数字能立刻告诉你「慢在哪一类」:TTFB 大 → 看后端和网络;字节数大 → 看图片;请求数多 → 看插件和前端。
3、测法一:一条 curl 命令(最快)
在任意一台能上网的机器上执行:
curl -s -o /dev/null -w '首字节 %{time_starttransfer}sn' https://你的域名/
至少测 5 次,取中位数。如果想看清慢在哪一段,把它拆开:
curl -s -o /dev/null -w 'DNS %{time_namelookup}s | TCP %{time_connect}s | TLS %{time_appconnect}s | 首字节 %{time_starttransfer}sn' https://你的域名/

怎么看这组数:
- DNS 很大(超过 100ms)→ 换解析服务商,或者交给 CDN 解析;
- TCP / TLS 大 → 物理距离或线路问题,不是你在服务器上能优化掉的;
- 首字节比 TLS 完成大很多(比如 TLS 0.5s、首字节 1.5s)→ 后端在干活,去看页面缓存和 PHP。
4、测法二:浏览器开发者工具(最直观)
按 F12 → Network → 勾上「Disable cache」→ 刷新页面,重点看两处:
- 瀑布图里第一个文档请求:它的「Waiting for server response」就是服务端耗时;
- 最下面那一行:Load 时间、总字节数、请求数。
如果第一个文档请求等了几百毫秒 → 后端或缓存有问题;如果文档请求很快、但图片一个个慢慢加载 → 是资源体积问题,去第四篇。

5、测法三:上服务器看(找真凶)
如果你是 VPS 自建,只看外部数字不够,还要去服务器上确认几件事:
- 页面缓存到底有没有生效:数一下缓存目录里的文件数量,和你的文章数比一比(我改之前是 114 篇文章只有 11 个静态文件,等于没缓存);
- PHP 是不是在排队:看 PHP-FPM 的 status 页里的
listen queue和active processes; - 有没有慢查询:打开 MySQL 慢查询日志,看 p95 / p99 耗时;
- CDN 命中率如何:看响应头里的
cf-cache-status,是HIT还是DYNAMIC/MISS。

这四个点后面会逐个展开,这一篇你只要知道「该去哪看」就够了。
6、国内和国外,必须分开测
这一点被绝大多数教程忽略:同一个站,国内和国外的体验可能差五倍以上。
我实测过(国内网络访问一个套了 Cloudflare 的站):
| 指标 | 国内实测 |
|---|---|
| TCP 建连(一个来回) | 263 ms |
| TLS 握手完成 | 525 ms |
| 首字节 TTFB | 817 ms(最差一次到 10 秒) |

而服务器自己处理一个请求只要 0.3~3 毫秒。也就是说:国内访客等的这 800ms 里,你的服务器只贡献了不到 1%。
所以测量要分两条线:用国内网络测一次,再用国外网络(或直接测源站)测一次。两边都慢 → 后端问题;只有国内慢 → 跨境和线路问题,这时候再怎么优化服务器都没用。
7、测完,对号入座
| 现象 | 最可能的原因 | 该看哪一篇 |
|---|---|---|
| 首字节 > 500ms,但 CDN 显示 HIT | CDN 节点离你太远 / 线路差 | 第二篇 |
首字节慢,且 cf-cache-status 是 DYNAMIC / MISS |
HTML 没被缓存,每次都回源 | 第二、三篇 |
| 首字节正常,但页面要 3 秒才加载完 | 图片没优化 / 资源太大 / JS 阻塞渲染 | 第四篇 |
| 平时快,偶尔很慢 | 缓存过期 / PHP 排队 / 数据库抖动 | 第三篇 |
| 只有国内用户喊慢 | 跨境延迟,和代码优化无关 | 第二篇(方案 D) |
对号入座之后,你才知道后面四篇里哪一篇对你真的有用 —— 而不是五篇全看一遍、每个插件都装一遍。
8、下一篇
下一篇讲最常见的那个答案:CDN。但会先说清一件事 —— CDN 只是「动静分离」的其中一种做法,还有不套 CDN 也能明显变快的路子。
(本篇为系列第一篇。文中数据来自一台 2 核 VPS 的实测,环境:Debian 13 + nginx 1.26 + PHP 8.4 + MariaDB + Redis。)

F12笔记



