奶爸笔记 EdgeOne 缓存清理器

描述

一款高效的 WordPress 插件,可在文章、页面或自定义文章类型发布、更新、删除时,自动清理腾讯云 EdgeOne 缓存。

外部服务

本插件通过调用腾讯云 EdgeOne API(https://teo.tencentcloudapi.com)实现缓存清理与预加载功能。

触发清理或预取操作时(如文章更新、手动清理),插件会向腾讯云发送以下信息:
* 腾讯云 API 密钥(SecretId):用于请求鉴权与签名
* EdgeOne 区域 ID:用于定位 EdgeOne 中的对应站点
* 目标 URL 或路径:需要在 CDN 节点清理或预取的具体资源

本服务由「腾讯云」提供:服务条款隐私政策

功能特性

自动缓存清理

  • 文章发布、更新、删除时自动清理缓存
  • 支持所有公开文章类型(文章、页面、自定义文章类型)
  • 智能清理:自动刷新文章页、首页、分类、标签、作者、日期归档页缓存

评论集成

  • 评论通过审核时,自动清理对应文章缓存

手动清理

  • 支持手动清理单篇文章或全站缓存
  • 后台提供近期文章快速清理按钮

灵活配置

  • 可选择清理方式:直接删除缓存(delete)或标记过期(invalidate)
  • 可选择开启缓存清理日志
  • 支持在 wp-config.php 中安全配置密钥

缓存插件集成

  • 主流 WordPress 缓存插件清理缓存时,自动同步清理 EdgeOne 缓存
  • 兼容 WP Super Cache、W3 Total Cache、WP Rocket、LiteSpeed Cache
  • 强制模式可确保即使关闭自动清理,缓存插件集成依然生效
  • 合理的执行时序控制,兼容各类缓存插件加载顺序

缓存预加载

  • 支持清理后自动预加载缓存(默认关闭)
  • 仅预加载文章 URL,不预加载归档页,节省 EdgeOne 预加载额度
  • 确保首个访客即可直接访问缓存内容
  • 预加载结果展示在清理日志中,方便查看

增强日志记录

  • 记录所有清理操作详情,包含成功/失败状态
  • 支持手动清空日志,便于调试
  • 预加载结果与清理结果同步展示
  • 返回任务 ID 与错误信息,方便排错

高级手动清理

  • 针对指定主机的「全部清除」功能,已通过 purge_host 方法完成优化。
  • 手动清理不受自动清理设置影响
  • 支持缓存插件集成强制模式
  • 文章相关缓存清理覆盖全面 URL

自定义 URL 清理

  • 可清理指定 URL 缓存(CSS、JS、图片等静态资源)
  • 支持以斜杠结尾的目录前缀清理
  • 支持批量处理,每行填写一个 URL
  • 自动校验与过滤 URL
  • 智能类型识别:文件使用精准 URL 清理,目录使用前缀清理

Nginx 缓存集成

  • 可在清理 EdgeOne CDN 缓存的同时,同步清理 Nginx 本地页面缓存(FastCGI 或代理缓存)
  • 需单独配置——大多数仅使用 WordPress 缓存插件的站点无需开启
  • Nginx 缓存与 EdgeOne 缓存独立清理,一方失败不影响另一方执行
  • 设置页面支持路径实时验证与状态反馈
  • 基于 ngx_cache_purge 模块实现 URL 精准清理,速度更快、效率更高
  • 新增“清理接口路径”选项,可自定义 Nginx 清理 URL 路径(建议使用随机字符串如 /xK9mPurge_q7z 提升安全性)
  • 通过 HTTPS 请求向自身域名发起清理,避免 HTTP 强制跳转 HTTPS 带来的问题
  • 清理日志采用友好错误提示:清晰说明某 URL 未被缓存的原因(如“未缓存——返回页面而非清理响应”),不再显示原始 HTML
  • 全站清理时支持降级为直接删除缓存文件
  • Nginx 缓存操作支持按 URL 记录详细清理日志

无需 SDK

  • 直接调用 API,无需安装腾讯云 SDK
  • 兼容所有 WordPress 5.5 及以上版本

配置说明

获取腾讯云 API 密钥

  1. 访问 腾讯云 API 密钥控制台
  2. 创建或获取你的 SecretIdSecretKey

获取 EdgeOne Zone ID

  1. 访问 EdgeOne 控制台
  2. 选择对应站点,获取 Zone ID(格式:zone-xxxxxx)

插件配置

提供两种配置方式:

方法一:通过 wp-config.php 配置(推荐)

将以下常量添加到 WordPress 的 wp-config.php 文件中:

define( 'NB_CACHE_PURGER_SECRET_ID', 'your-secret-id' );
define( 'NB_CACHE_PURGER_SECRET_KEY', 'your-secret-key' );

随后在 WordPress 后台操作:
1. 进入「设置」「EdgeOne 缓存清理器」
2. 填写 Zone ID(Secret ID 与 Secret Key 会从常量自动加载)
3. 选择其他选项并保存设置

方法二:后台直接配置

  1. 登录 WordPress 管理后台
  2. 进入「设置」「EdgeOne 缓存清理器」
  3. 填写以下信息:
    • Secret ID:腾讯云 API 密钥 ID
    • Secret Key:腾讯云 API 密钥
    • Zone ID:EdgeOne 站点区域 ID
  4. 按需选择其他设置:
    • 启用自动清理:文章更新时是否自动清理缓存
    • 清理方式
      • delete:直接删除节点缓存
      • invalidate:标记为过期,从源站重新校验
    • 启用日志:是否记录缓存清理操作

Nginx 缓存集成(可选)

仅当服务器使用 Nginx FastCGI 缓存或代理缓存(在 nginx.conf 中通过 fastcgi_cache_pathproxy_cache_path 配置)时需要。大多数使用 WordPress 缓存插件的网站无需配置此项。

  1. 进入「设置」「EdgeOne 缓存清理器」,滚动至页面底部的Nginx 缓存集成区域
  2. 勾选启用 Nginx 缓存清理
  3. 设置清理接口路径——为安全起见建议使用随机字符串(如 /xK9mPurge_q7z),这样即可在 Nginx 中使用 allow all; 而不会暴露接口风险
  4. 填写 Nginx 缓存目录的绝对路径(如 /var/run/nginx-cache)——该路径仅在全站清理时作为备用方案使用
    • Web 服务进程(如 www-data)必须对该目录拥有写入权限
    • 设置页面会自动验证路径,并显示是否可写
  5. 保存设置——此后每次清理 EdgeOne 缓存时,都会自动同步清理 Nginx 缓存

Nginx 清理配置

如需使用 ngx_cache_purge 模块集成,需在 Nginx 站点配置中添加对应的清理规则。将 /xK9mPurge_q7z 替换为你自定义的清理路径:

nginx
location ~ /xK9mPurge_q7z(/.*) {
    allow all;
    deny none;
    fastcgi_cache_purge YOUR_CACHE_ZONE "https$request_method$host$1";
    # Or for proxy cache:
    # proxy_cache_purge YOUR_CACHE_ZONE "https$request_method$host$1";
}

YOUR_CACHE_ZONE 替换为你实际的 Nginx 缓存区域名称(如 wordpress)。

重要说明:
* fastcgi_cache_purge 缓存键("https$request_method$host$1")必须与 fastcgi_cache_key 完全一致,包括 https 前缀
* 若你使用宝塔面板并开启了 HTTP 跳 HTTPS 规则,插件会直接向你的域名发送 HTTPS 请求,无需额外添加排除规则
* 详细配置步骤请查看 配置教程

屏幕截图

  • 插件设置页面——配置 EdgeOne 密钥与清理选项
  • 快速清理按钮——针对近期文章的手动清理选项
  • 日志查看器——查看详细的缓存清理操作日志

安装

方法一:上传安装

  1. 下载插件压缩包
  2. 登录 WordPress 管理后台
  3. 进入「插件」「安装插件」「上传插件」
  4. 选择并上传插件压缩包
  5. 启用插件

方法二:手动安装

  1. 将插件文件夹上传至 wp-content/plugins/ 目录
  2. 登录 WordPress 管理后台
  3. 进入「插件」页面
  4. 找到“奶爸笔记 EdgeOne 缓存清理器”插件并启用

常见问题

什么是 EdgeOne?

EdgeOne 是腾讯云推出的边缘计算与 CDN 服务,提供全球内容分发与安全防护能力。

为什么需要清理缓存?

更新 WordPress 内容后,EdgeOne 可能仍返回旧缓存。本插件可确保访客立即看到最新内容。

本插件安全吗?

支持,插件可在 wp-config.php 中存放 API 密钥,避免密钥保存在数据库或后台界面中。

文章更新时会清理哪些 URL?

The plugin automatically purges:
* The post/page URL
* Homepage
* Category archives the post belongs to
* Tag archives the post has
* Author archive
* Date-based archives

Do I need the Nginx Cache Integration?

不需要,该功能为可选。仅当服务器使用 Nginx 层级页面缓存(FastCGI 或代理缓存)时才需开启。如果你使用 WP Rocket、W3 Total Cache、LiteSpeed Cache 等 WordPress 缓存插件,则无需启用。

Nginx 缓存与 EdgeOne CDN 缓存有什么区别?

EdgeOne CDN 缓存分布于全球边缘节点,通过腾讯云 API 管理。Nginx 缓存是存放在你服务器本地的页面缓存,由 Nginx 的 fastcgi_cacheproxy_cache 指令控制。二者为独立缓存层,本插件可同时清理两类缓存。

插件为何只删除缓存文件,而不删除并重建 Nginx 缓存目录?

删除并重建目录会出现短暂窗口期,可能导致 Nginx 无法写入新缓存。仅删除目录内文件、保留目录本身,可让清理更安全,避免 Nginx 报错。

Nginx 缓存路径显示“不可写”,该如何解决?

PHP 进程(通常为 www-datanginx)需要对缓存目录拥有写入权限。请根据服务器环境执行 chown www-data:www-data /你的缓存路径chmod 755 /你的缓存路径

评价

此插件暂无评价。

贡献者及开发者

「奶爸笔记 EdgeOne 缓存清理器」是开源软件。 以下人员对此插件做出了贡献。

贡献者

「奶爸笔记 EdgeOne 缓存清理器」插件已被翻译至 1 种本地化语言。 感谢所有译者为本插件所做的贡献。

帮助将「奶爸笔记 EdgeOne 缓存清理器」翻译成简体中文。

对开发感兴趣吗?

您可以浏览代码,查看SVN仓库,或通过RSS订阅开发日志

更新日志

2.3.1

  • Fixed async purge not executing — multiple root causes addressed:
    • Switched async task data storage from transient to wp-option to prevent data loss when object cache (Redis/Memcached) evicts keys
    • Removed 5-second scheduling delay that caused trigger_cron() to fire before tasks were due
    • Fixed trigger_cron() setting doing_cron transient that blocked server-side cron from running
    • Uses spawn_cron() by default; falls back to direct non-blocking HTTP request to wp-cron.php when DISABLE_WP_CRON is set
  • Fixed purge logs not being recorded when object cache evicts transients — switched log storage from transient to wp-option
  • Added async task health monitoring: stuck tasks are detected and executed synchronously as recovery
  • Added auto-degradation from async to sync mode with admin notice when WP-Cron is broken
  • Added purge lock check in health recovery to prevent duplicate API calls
  • Extended health check threshold to 15 minutes when DISABLE_WP_CRON is set (to accommodate server cron intervals)

2.3.0

  • 增强 Nginx 缓存清理功能:将递归删除文件改为通过 ngx_cache_purge 模块发起 HTTP 请求,实现 URL 精准清理
  • Nginx 缓存操作新增按 URL 记录清理日志功能
  • 设置页面新增“测试 Nginx 清理连接”按钮,用于校验 ngx_cache_purge 模块配置
  • 全站清理时新增文件删除降级方案
  • 优化 Nginx 清理错误处理与状态反馈

2.2.0

  • 优化「全部清除」行为:现在仅清理当前站点主机名的缓存(使用 purge_host 接口),而非清理整个区域缓存,避免误清除共享同一 EdgeOne 区域 ID 的其他子域名缓存。

2.1.0

  • 品牌全面升级:插件正式更名为奶爸笔记 EdgeOne 缓存清理器
  • 深度重构内部类、命名空间与文件结构,便于后续维护
  • 所有内部数据库配置键统一改为小写标准前缀 nb_cache_purger_
  • 统一所有钩子、临时数据与令牌前缀为 nb_cache_purger_
  • 提升安全性与商标合规性

2.0

  • 基于现代 PHP 命名空间架构完成代码重构
  • 新增异步清理模式支持(可在设置中开关)
  • 新增清理统计面板,展示总清理次数、成功率及触发原因分类
  • 增强日志脱敏处理,保护 API 密钥等敏感信息
  • 优化顶部导航菜单,采用二级结构(EdgeOne 清理全部 / 设置)
  • 增强安全防护:在 wp-config.php 配置密钥后,后台敏感输入框自动隐藏
  • 采用模块化代码结构,提升可维护性与扩展性
  • 优化错误处理,新增详细 API 响应日志
  • 更新界面交互,沿用 1.4 版本风格并保留 2.0 完整功能
  • 恢复全部界面元素的中文翻译
  • 插件列表页新增设置入口
  • 优化手动清理界面,将文章 ID 与自定义 URL 分为独立区域
  • 增强日志记录,优化错误提示与请求追踪

1.4

  • 新增 Nginx 本地缓存集成支持(FastCGI / 代理缓存)
  • 设置页面实时校验 Nginx 缓存路径(是否存在、是否可写)
  • Nginx 缓存与 EdgeOne CDN 缓存独立清理,一方失败不影响另一方执行
  • 开启日志后,Nginx 清理结果会记录在清理日志中
  • 新增设置项默认关闭,并明确标注为可选,避免不使用 Nginx 缓存的用户混淆
  • 插件列表页新增设置快捷入口
  • 后台顶部导航栏新增 EdgeOne 入口,包含快速清理全站缓存与设置快捷链接

1.3

  • 优化多语言支持与语言文件

1.2

  • 新增静态资源(CSS、JS、图片)自定义 URL 清理功能
  • 新增支持以斜杠结尾的目录前缀清理
  • 修复缓存插件钩子检测逻辑
  • 优化插件初始化执行时序
  • 增强手动清理,新增全站清理支持
  • 为缓存插件集成添加强制运行模式
  • 优化日志展示,新增预加载结果显示
  • 新增手动清空日志功能
  • 修复 X-TC-Timestamp 请求头类型安全问题
  • 更新兼容 WordPress 6.0 及以上版本
  • 优化设置项说明文字,更易理解

1.1

  • 新增主流缓存插件兼容集成
  • 新增可选缓存预加载功能
  • 优化错误处理与日志记录

1.0

  • 初始版本发布
  • 文章发布/更新/删除时自动清理缓存
  • 新增手动清理功能
  • 新增评论集成
  • 新增灵活配置项
  • 新增日志支持