WordPress 默认每次请求都要执行 PHP 脚本并查询数据库,随着内容增多和访问量上升,页面响应会越来越慢。合理的缓存策略可以将大多数请求变成直接返回静态文件,将页面加载时间从秒级压缩到毫秒级。本文系统梳理 WordPress 性能优化的核心手段,从缓存插件到服务器端 Redis,再到图片与 CDN,帮你建立完整的优化体系。

本文要点

  • 页面缓存插件选型:WP Super Cache、W3 Total Cache、LiteSpeed Cache
  • Redis 对象缓存:减少重复数据库查询
  • PHP OPcache:消除 PHP 脚本编译开销
  • 图片优化:压缩、WebP 转换与懒加载
  • CDN 接入:静态资源分发加速

性能优化概览

优化层手段预期效果
页面缓存缓存插件生成静态 HTMLTTFB 降低 60–90%
对象缓存Redis 缓存数据库查询结果重复查询耗时降低 80%+
PHP 层OPcache 缓存字节码PHP 执行速度提升 30–50%
图片压缩 + WebP + 懒加载页面体积减少 30–60%
CDN静态资源就近分发跨地域访问延迟降低

页面缓存插件

页面缓存将动态生成的 HTML 保存为静态文件,后续请求直接读取文件而无需执行 PHP,是最直接的加速手段。

WP Super Cache(推荐新手)

配置简单,安装激活后进入插件设置,开启 专家模式 并勾选 启用缓存,然后将 Nginx 缓存规则添加到虚拟主机配置中:

# 在 Nginx server 块中添加
set $cache_uri $request_uri;
if ($request_method = POST) { set $cache_uri "null cache"; }
if ($query_string != "") { set $cache_uri "null cache"; }
if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap)") {
    set $cache_uri "null cache";
}
location / {
    try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html
              $uri $uri/ /index.php?$args;
}

W3 Total Cache(功能全面)

W3 Total Cache 支持页面缓存、数据库缓存、对象缓存、浏览器缓存和 CDN 集成,功能最为全面,适合有一定经验的用户。主要配置项:开启 Page Cache(推荐磁盘增强模式)、开启 Browser Cache、配置 CDN 域名。

缓存插件注意事项

同时激活多个缓存插件会产生冲突,只保留一个即可。动态内容页面(购物车、用户中心)应在缓存插件中排除,避免内容混乱。

Redis 对象缓存

WordPress 的 Transients API 和对象缓存默认使用 PHP 内存,进程结束后即失效。安装 Redis 后,可以将这些缓存持久化,跨请求复用数据库查询结果。

安装 Redis 服务器

apt install -y redis-server
systemctl enable --now redis-server
# 验证
redis-cli ping  # 返回 PONG 即正常

安装 PHP Redis 扩展

apt install -y php8.1-redis
systemctl restart php8.1-fpm

安装 WordPress Redis 插件

在 WordPress 后台插件市场搜索并安装 Redis Object Cache,激活后进入插件设置页,点击 Enable Object Cache,插件会自动创建 wp-content/object-cache.php

验证 Redis 缓存生效

在插件设置页查看"Status"显示 Connected,并观察 Cache Hits/Misses 比率逐渐升高,即表示 Redis 对象缓存正常工作。

PHP OPcache 调优

OPcache 将 PHP 脚本编译为字节码后缓存在内存中,避免每次请求都重新编译。确认已开启:

php -m | grep -i opcache  # 应输出 Zend OPcache
php --ini | grep opcache  # 查看配置文件路径

编辑 /etc/php/8.1/fpm/conf.d/10-opcache.ini(路径按版本调整),添加或修改:

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

图片优化

插件压缩与 WebP 转换

推荐使用 ImagifyShortPixel 插件,支持批量压缩历史图片并自动将新上传图片转为 WebP 格式(在支持 WebP 的浏览器自动提供 WebP,其他浏览器降级到 JPEG/PNG)。

懒加载

WordPress 5.5+ 已内置图片懒加载(loading="lazy"),主题和插件需保证不覆盖此属性。可安装 a3 Lazy Load 对 iframe 等元素扩展懒加载。

CDN 接入

CDN(内容分发网络)将静态资源(JS、CSS、图片)缓存到全球节点,用户从最近节点获取资源,显著降低延迟。

  • Cloudflare(免费套餐可用):修改域名 NS 到 Cloudflare,自动代理并缓存静态资源
  • 阿里云/腾讯云 CDN:需在 WordPress 中将 URL 前缀替换为 CDN 域名,可用 CDN Enabler 插件
  • BunnyCDN:价格低廉,海外节点丰富,与 WP Rocket 集成较好

开启 CDN 后注意缓存清除

修改主题样式或插件 JS 后,务必在 CDN 后台或缓存插件中清除对应文件的缓存,否则访客看到的仍是旧版本。

小结

  • 页面缓存是最立竿见影的优化,新手优先安装 WP Super Cache
  • Redis 对象缓存适合内容量大、登录用户多的站点
  • OPcache 是默认应该开启的服务端优化,几乎零成本
  • 图片体积通常占页面总体积 60% 以上,压缩+懒加载是必做项
  • CDN 主要改善跨地域访问体验,国内访问为主可优先考虑国内节点 CDN

常见问题

WP Super Cache 和 W3 Total Cache 哪个更好?

WP Super Cache 配置简单,适合新手;W3 Total Cache 功能更全面但配置项繁多,适合有经验的用户。两者效果相差不大,选一个即可。

Redis 需要设置密码吗?

强烈建议设置。编辑 /etc/redis/redis.conf,找到 requirepass 行,取消注释并设置强密码,然后在 wp-config.php 中用 WP_REDIS_PASSWORD 常量填入密码。

开启缓存后后台编辑文章,前台立刻能看到更新吗?

取决于缓存插件配置。大多数插件支持在文章更新时自动清除对应页面缓存,建议在插件设置中确认"发布后自动清除相关缓存"已开启。