在 cPanel EA4 上清除 WordPress 缓存
即时、自动的 WordPress 缓存失效—无需清除整个缓存。
🎉 免费访问 - 限时!
所有 EA4 模块目前都是 免费的 — 无需订阅! 了解更多
-
自动失效
当您编辑帖子、页面或评论时,缓存会自动清除—无需手动干预
-
精准清除
仅清除更改的页面—您的整个网站保持缓存并快速响应
-
多租户安全
每个 cPanel 用户的缓存是隔离的—用户无法清除彼此的内容
-
零编码要求
与 Proxy Cache Purge WordPress 插件开箱即用
5 分钟设置
按照以下步骤在您的 cPanel 服务器上启用智能缓存清除。
步骤 1:安装缓存清除模块
# 安装 GetPageSpeed 仓库(在 cPanel 服务器上自动启用 ea4 仓库)
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
# 安装缓存清除模块
dnf -y install ea-nginx-cache-purge
步骤 2:配置 NGINX
您可以为所有用户或每个用户全局启用缓存清除。
创建 /etc/nginx/conf.d/server-includes/cache-purge.conf:
# 启用 PURGE 方法进行缓存清除(所有用户)
proxy_cache_purge PURGE from 127.0.0.1;
此文件会自动包含在所有 cPanel 用户的服务器块中。
对于用户 username,创建 /etc/nginx/conf.d/users/username/cache-purge.conf:
# 启用 PURGE 方法进行缓存清除
proxy_cache_purge PURGE from 127.0.0.1;
创建配置后,重新加载 NGINX:
nginx -t && systemctl reload nginx
步骤 3:安装 Proxy Cache Purge 插件
- 转到 插件 → 添加新插件
- 搜索 "Proxy Cache Purge"(slug:
varnish-http-purge) - 点击 立即安装,然后 激活
wp plugin install varnish-http-purge --activate
步骤 4:配置 Proxy Cache Purge
在 WordPress 管理中:
- 转到 设置 → Proxy Cache Purge
- 将 "设置自定义 IP" 设置为:
127.0.0.1 - 点击 保存设置
关键设置
插件必须将 PURGE 请求发送到 127.0.0.1(本地主机),而不是您的公共 IP 或域名。
步骤 5:配置 NGINX 缓存后端
从 Proxy Cache Purge 5.9.0 开始,插件原生支持 NGINX 的通配符清除格式。配置它以使用 NGINX 后端:
- 转到 Proxy Cache Purge → 设置
- 在 缓存后端 下,选择 NGINX
- 点击 保存设置
添加到您的 wp-config.php:
define( 'VHP_PURGE_BACKEND', 'nginx' );
这确保在清除页面时,所有缓存变体(gzip、brotli、未压缩)都被清除。
遗留:插件版本 < 5.9.0
如果您正在运行早于 5.9.0 的 Proxy Cache Purge,请创建
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. 缓存一个页面(第一次请求 = MISS,第二次 = HIT)
curl -sI http://127.0.0.1/sample-page/ -H 'Host: yourdomain.com' -H 'Accept-Encoding: gzip' | grep X-Cache
# X-Cache-Status: MISS
curl -sI http://127.0.0.1/sample-page/ -H 'Host: yourdomain.com' -H 'Accept-Encoding: gzip' | grep X-Cache
# X-Cache-Status: HIT
# 2. 使用通配符的 PURGE 方法进行清除
curl -sX PURGE 'http://127.0.0.1/sample-page/*' -H 'Host: yourdomain.com'
# <h1>成功清除</h1>
# 3. 验证缓存已清除
curl -sI http://127.0.0.1/sample-page/ -H 'Host: yourdomain.com' -H 'Accept-Encoding: gzip' | grep X-Cache
# X-Cache-Status: MISS
然后通过 WordPress 进行测试:
- 编辑任何已发布的帖子
- 进行更改并点击 更新
- 插件会自动清除缓存
- 访问该页面—它应该显示新内容
工作原理
flowchart TD
subgraph WordPress["<b>WordPress</b>"]
A[📝 帖子已更新] --> B["🔌 Proxy Cache Purge 插件"]
B --> C["PURGE http://127.0.0.1/post-slug/*<br/>Host: yourdomain.com"]
end
C --> D
subgraph NGINX["<b>NGINX (ea-nginx)</b>"]
D["🔒 proxy_cache_purge PURGE from 127.0.0.1"] --> E["🗑️ ngx_cache_purge 模块"]
E --> F["✓ 通配符匹配所有变体<br/>(gzip、brotli、plain)"]
F --> G["✓ 从磁盘缓存中删除"]
G --> H["✅ 返回 '成功清除'"]
end
style WordPress fill:#4a90d9,stroke:#2d5986,color:#fff
style NGINX fill:#009639,stroke:#006325,color:#fff
style A fill:#5ba0e0
style B fill:#5ba0e0
style C fill:#5ba0e0
style D fill:#00a844
style E fill:#00a844
style F fill:#00a844
style G fill:#00a844
style H fill:#00a844
发生了什么
- 您在 WordPress 中更新了一篇帖子
- 插件向本地主机发送
PURGE请求 - NGINX 模块仅从缓存中移除 该 URL
- 下一个访问者获取新内容,其余缓存保持不变
为什么它这么快
- 没有完全清除缓存 — 其他页面保持缓存
- 仅限本地请求 — 没有网络延迟
- 通配符支持 — 一次性清除所有编码变体
高级:减少缓存变体
可选优化
推荐用于高流量网站,以最大化缓存命中率。
Vary: Accept-Encoding 头导致 NGINX 为不同的 Accept-Encoding 组合创建单独的缓存条目。浏览器以不同的顺序发送这些,导致缓存膨胀:
| 原始 Accept-Encoding | 问题 |
|---|---|
gzip, br, deflate |
单独的缓存条目 |
br, gzip |
另一个单独的条目 |
gzip, deflate |
又一个条目 |
解决方案:标准化头部
compression-normalize 模块将头部标准化为一致的值:
dnf -y install ea-nginx-compression-normalize
创建 /etc/nginx/conf.d/compression-normalize.conf:
# 标准化 Accept-Encoding 以减少缓存变体
# 优先顺序:优先 brotli,然后 gzip
compression_normalize_accept_encoding br,gzip br gzip;
结果: 数百个可能的变体 → 仅 3 个 (br,gzip, br, gzip)。
安全性
仅限本地主机访问
proxy_cache_purge PURGE from 127.0.0.1;
外部 PURGE 请求将作为正常请求处理,而不是清除请求。
用户隔离
每个 cPanel 用户都有自己的缓存区域。用户 alice 无法清除用户 bob 的缓存—即使使用相同的 URL 路径。
故障排除
缓存未被清除
- 验证插件设置:
- 转到 设置 → Proxy Cache Purge
-
确保 自定义 IP 设置为
127.0.0.1 -
检查缓存后端设置:
- 转到 Proxy Cache Purge → 设置 并验证 缓存后端 设置为 NGINX
-
或检查
wp-config.php是否包含define( 'VHP_PURGE_BACKEND', 'nginx' ); -
检查 NGINX 配置是否已加载:
nginx -T | grep cache_purge
412 前提条件失败
这意味着 URL 不在缓存中。这不是错误—只是没有可清除的内容。
模块未加载
# 检查是否已安装
rpm -q ea-nginx-cache-purge
# 检查模块文件
ls -la /etc/nginx/modules/ngx_http_cache_purge_module.so
相关
-
cPanel EA4 仓库
cPanel 的 ea-nginx 模块的完整设置指南
-
cache-purge 模块
完整的指令参考和高级用法
-
Proxy Cache Purge 插件
官方 WordPress 插件页面