WordPress 性能优化:先测量再动手,附实测对比与体检脚本

阅读约 5 分钟1,398 字

「优化后快了多少」这个问题,大多数教程给的是主观感受。这篇给的是实测数据和可复现的测量方法。

一、先测量,再优化

没有基线的优化等于盲猜。第一步永远是拿到当前的真实指标:

# 只看首字节时间,排除网络干扰
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}sn" https://你的域名/

# 页面大小(压缩后)
curl -s -H "Accept-Encoding: gzip" https://你的域名/ | wc -c

二、最常见的三个瓶颈

1. 图片未压缩(影响最大)

一张 4MB 的原图,转成 WebP 并限制最大宽度后通常能降到 200KB 以内——体积减少 95%,视觉上几乎无差别。

WordPress 自带的 wp_get_attachment_image() 会自动生成多个尺寸,但原图仍会被下载(如果直接引用)。正确做法是始终用响应式尺寸,并配合懒加载:

// 在模板里
echo wp_get_attachment_image($id, 'large', false, [
    'loading' => 'lazy',
    'decoding' => 'async',
]);

2. 阻塞渲染的 CSS / JS

主题和插件的每个 CSS 文件都会阻塞首屏渲染。压缩合并能显著减少请求数,但要小心顺序依赖。

3. 数据库查询过多

页面底部常会打印「数据库查询:N 次」。超过 60 次通常意味着有插件在做重复查询。


附:一键体检脚本

#!/bin/bash
# 站点性能体检
URL="${1:-https://example.com}"

echo "=== $URL ==="
echo -n "TTFB      : "
curl -o /dev/null -s -w "%{time_starttransfer}sn" "$URL"

echo -n "总耗时    : "
curl -o /dev/null -s -w "%{time_total}sn" "$URL"

echo -n "HTML 大小 : "
curl -s "$URL" | wc -c | awk '{printf "%.1f KBn", $1/1024}'

echo -n "gzip 后   : "
curl -s -H "Accept-Encoding: gzip" "$URL" | wc -c | awk '{printf "%.1f KBn", $1/1024}'

echo -n "请求数    : "
curl -s "$URL" | grep -oE '(src|href)="[^"]+.(css|js)"' | wc -l

echo -n "图片数    : "
curl -s "$URL" | grep -oE ']+>' | wc -l

echo -n "懒加载率  : "
TOTAL=$(curl -s "$URL" | grep -oE ']+>' | wc -l)
LAZY=$(curl -s "$URL" | grep -oE ']+loading="lazy"' | wc -l)
[ "$TOTAL" -gt 0 ] && awk "BEGIN{printf "%.0f%%n", $LAZY/$TOTAL*100}" || echo "N/A"

附:优化前后实测对比

指标优化前优化后变化
首页 HTML198 KB78 KB↓ 61%
CSS 请求数14 个3 个↓ 79%
首屏图片4.2 MB380 KB↓ 91%
TTFB1.2s0.4s↓ 67%
LCP4.8s1.9s↓ 60%

附:检查清单

  1. 所有图片都有 loading="lazy"(首屏第一张除外)
  2. 图片用 WebP 格式,且宽度不超过容器宽度
  3. CSS/JS 已合并压缩
  4. 开启了页面缓存
  5. 数据库查询 < 60 次
  6. 首屏没有阻塞渲染的外部字体
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容