VPS 上的 WordPress 缓存清除
在任何基于 RHEL 的 VPS 或专用服务器上,立即自动清除 WordPress 缓存。
-
自动清除
当您编辑帖子、页面或评论时,缓存会自动清除
-
精准清除
仅清除已更改的页面——您的整个网站保持缓存且快速
-
5 分钟设置
使用我们预构建的 NGINX 模块进行简单配置
-
基于磁盘的缓存
缓存在 NGINX 重启后仍然存在——更新后没有冷缓存
先决条件
- 一台运行 RHEL 7/8/9、Rocky Linux、AlmaLinux 或 Amazon Linux 的 VPS 或专用服务器
- 安装了 NGINX(推荐使用 GetPageSpeed 仓库)
- 配置了完整页面缓存的 WordPress 网站
快速设置
步骤 1:安装缓存清除模块
# 安装 GetPageSpeed 仓库
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
# 安装缓存清除模块
dnf -y install nginx-module-cache-purge
在 /etc/nginx/nginx.conf 中启用该模块:
load_module modules/ngx_http_cache_purge_module.so;
步骤 2:配置 NGINX 代理缓存
如果您尚未配置代理缓存,以下是完整的设置:
编辑 /etc/nginx/nginx.conf 或创建 /etc/nginx/conf.d/proxy-cache.conf:
# 定义缓存区域(在 http 块中)
proxy_cache_path /var/cache/nginx/wordpress
levels=1:2
keys_zone=wordpress:100m
max_size=10g
inactive=60m
use_temp_path=off;
在您的服务器块中:
server {
listen 80;
server_name example.com;
# 启用缓存
proxy_cache wordpress;
proxy_cache_valid 200 60m;
proxy_cache_valid 404 1m;
proxy_cache_key "$scheme$request_method$host$request_uri";
# 添加缓存状态头
add_header X-Cache-Status $upstream_cache_status;
# 启用 PURGE 方法(仅限 localhost)
proxy_cache_purge PURGE from 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:8080; # 您的后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
创建缓存目录:
mkdir -p /var/cache/nginx/wordpress
chown nginx:nginx /var/cache/nginx/wordpress
nginx -t && systemctl reload nginx
步骤 3:安装代理缓存清除插件
- 转到 插件 → 添加新插件
- 搜索 "Proxy Cache Purge"(slug:
varnish-http-purge) - 点击 立即安装,然后 激活
wp plugin install varnish-http-purge --activate
步骤 4:配置代理缓存清除
在 WordPress 管理中:
- 转到 设置 → Proxy Cache Purge
- 将 "设置自定义 IP" 设置为:
127.0.0.1 - 点击 保存设置
关键设置
插件必须将 PURGE 请求发送到 127.0.0.1(localhost),而不是您的公共 IP。
步骤 5:配置 NGINX 缓存后端
从 Proxy Cache Purge 5.9.0 开始,插件原生支持 NGINX 的通配符清除格式。配置它以使用 NGINX 后端:
- 转到 Proxy Cache Purge → 设置
- 在 缓存后端 下,选择 NGINX
- 点击 保存设置
添加到您的 wp-config.php:
define( 'VHP_PURGE_BACKEND', 'nginx' );
遗留:插件版本 < 5.9.0
如果您运行的 Proxy Cache Purge 版本低于 5.9.0,请创建
wp-content/mu-plugins/nginx-cache-purge-fix.php:
<?php
/**
* 插件名称:NGINX 缓存清除修复
* 描述:为 Vary 头兼容性附加通配符以清除 URL
*/
add_filter("vhp_purgeme_path", function($purgeme, $schema, $host, $path, $pregex, $p) {
if (empty($pregex)) {
$purgeme .= "*";
}
return $purgeme;
}, 10, 6);
测试设置
# 1. 缓存一个页面
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: MISS (第一次请求)
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: HIT (缓存!)
# 2. 清除页面
curl -sX PURGE 'http://127.0.0.1/sample-page/*' -H 'Host: example.com'
# <h1>成功清除</h1>
# 3. 验证缓存已清除
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: MISS (已清除!)
工作原理
flowchart LR
subgraph WP["WordPress"]
A["📝 帖子已更新"] --> B["🔌 插件"]
end
B -->|"PURGE /post/*"| C
subgraph NG["NGINX"]
C["🗑️ cache_purge"] --> D["✅ 页面已移除"]
end
E["👤 访客"] -->|"GET /post/"| NG
D --> F["提供新内容"]
style WP fill:#4a90d9,stroke:#2d5986,color:#fff
style NG fill:#009639,stroke:#006325,color:#fff
性能提示
-
使用 RAM 磁盘进行热缓存
将
/var/cache/nginx挂载为 tmpfs,以获得最快的缓存读取速度mount -t tmpfs -o size=2G tmpfs /var/cache/nginx -
标准化压缩头
使用 compression-normalize 模块减少缓存变体
-
为登录用户绕过缓存
proxy_cache_bypass $cookie_wordpress_logged_in;
安全考虑
from 127.0.0.1 限制是 关键:
proxy_cache_purge PURGE from 127.0.0.1;
没有它,任何人都可以通过发送 PURGE 请求来清除您的缓存。
为了进一步增强安全性,您还可以:
# 仅允许特定 IP 的 PURGE
proxy_cache_purge PURGE from 127.0.0.1 10.0.0.0/8;
# 或要求身份验证
# (本指南未涵盖)
故障排除
X-Cache-Status 始终显示 MISS
- 检查 proxy_cache 指令是否已启用
- 验证缓存目录是否存在并且可被 nginx 写入
- 检查
proxy_cache_bypass规则是否总是触发
PURGE 返回 404
- 确保
proxy_cache_purge指令在正确的位置块中 - 检查模块是否已加载:
nginx -V 2>&1 | grep cache_purge
缓存目录填满
- 调整
proxy_cache_path中的max_size - 减少
inactive超时 - 运行
nginx -s reload以触发缓存管理器清理
相关
-
cache-purge 模块
完整指令参考
-
compression-normalize 模块
减少缓存变体
-
FastCGI 缓存指南
PHP-FPM 的替代缓存方法