在宝塔面板(基于 Nginx)中配置 FastCGI Cache 是提升 WordPress 性能的绝佳方案。通过这种方式,Nginx 会直接把 HTML 页面缓存到服务器内存(Shared Memory)或硬盘中,当访客请求时直接返回,连 PHP 和 Redis 都无需参与,速度会提升数十倍。

以下是详细的操作步骤,分为服务器端配置和WordPress 自动清理配置两部分:

第一步:修改 Nginx 全局配置

1、登录宝塔面板

2、点击左侧菜单的 软件商店,在应用列表中找到你安装的 Nginx,点击右侧的 设置

3、在弹出的窗口中选择 配置修改

4、滚动到代码底部,在 include vhost/*.conf;上一行,粘贴以下全局缓存定义代码:

# 定义缓存存储路径、名称(WORDPRESS)、内存大小(100m)、失效时间(60m)以及最大硬盘占用(1g)
# 这里使用 /dev/shm 内存区域,速度极快。如果内存小,可以改用 /tmp/nginx-cache
fastcgi_cache_path /dev/shm/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m max_size=1g;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;

5、点击保存。然后点击 服务 选项卡,点击 重载配置(Reload)。

第二步:配置 WordPress 站点虚拟主机

1、在宝塔面板左侧点击 网站,找到你的 WordPress 站点,点击 设置

2、选择 配置文件

3、在代码的最顶端(第一个 server { 的下方),加入以下跳过缓存的规则(防止后台、登录用户、电商购物车被错误缓存):

set $skip_cache 0;

# POST 请求(如提交评论、发帖)不缓存
if ($request_method = POST) {
set $skip_cache 1;
}
# 带有参数的 URL 不缓存
if ($query_string != "") {
set $skip_cache 1;
}

# 登录后台、特定系统页面不缓存
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
}

# 登录用户或留过言的用户不缓存
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}

4、接下来,在同一个配置文件中向下滚动,找到处理 PHP 的核心代码块(通常包裹在 location ~ [^/]\.php(/|$) 中)。

5、在大括号 { … } 内部的最后面,追加入以下缓存控制代码:

# 启用前面定义的 WORDPRESS 缓存区
fastcgi_cache WORDPRESS;
# 状态码为 200、301、302 的页面缓存 1 天
fastcgi_cache_valid 200 301 302 1d;

fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;

# 向浏览器发送缓存状态标头(用于调试和通过站点健康检测)
add_header X-Cache-Status $upstream_cache_status;
add_header Cache-Control "public, max-age=3600, must-revalidate";

6、点击保存。同样去 Nginx 管理里重载配置。

第三步:在 WordPress 中配置自动清理缓存

Nginx 缓存非常强悍,但默认情况下,你发布新文章或有人评论时,前端页面不会立刻更新。我们需要安装一个轻量插件,让 WordPress 告诉 Nginx 什么时候该清除缓存。

1、登录 WordPress 后台,点击 插件 -> 安装插件

2、搜索并安装 Nginx Helper,并启用

3、进入 设置 (Settings) -> Nginx Helper,进行如下配置:

  • Enable Purge: 勾选开启。
  • Purge Method: 选择 Local Panel/nginx fastcgi_cache(如果没有这个选项,选择 Delete local files 并填入第一步中的缓存路径 /dev/shm/nginx-cache)。
  • Purging Conditions: 勾选“当发布新文章”、“有新评论”、“文章修改”时自动清理。

4、保存设置。

第四步:验证是否配置成功

打开你的网站首页,按 F12 打开浏览器开发者工具,切换到 Network (网络) 标签页,刷新页面,点击你的域名(第一个请求),查看 Headers (标头)

  • 第一次访问:你应该会看到 X-Cache-Status: MISS(代表没命中,服务器正在生成缓存)。

  • 第二次(及后续)访问:你应该会看到 X-Cache-Status: HIT恭喜,命中缓存!页面直接由 Nginx 秒开)。

  • 登录后台时访问:你应该会看到 X-Cache-Status: BYPASS(代表登录用户成功跳过了缓存,确保后台操作正常)。