xnx_edgeone EdgeOne 加速插件
功能
通过腾讯云 EdgeOne 全球边缘节点加速静态资源(CSS/JS/图片/字体)和动态页面
URL 替换:拦截 url() 函数输出 + 输出缓冲替换硬编码的 /view/ 和 /upload/ 路径
排除路径配置(如 admin/view/ 后台不入 CDN)
资源类型勾选(css / js / image / font 4 类)
失败回源:onerror 自动回退到源站 URL,避免 CDN 故障导致资源 404
DNS 预解析 + preconnect 预连接,加速首屏
Token 鉴权(Type D 方式:MD5(密钥+Path+timestamp)),防止 CDN 资源被盗刷
缓存刷新:调用 EdgeOne CreatePurgeTask API,支持全站刷新 / URL 刷新 / 指定目录刷新
自动刷新:发帖/回帖后异步刷新帖子详情、版块列表、首页
API 测试:连接测试 / 获取 Zone 列表 / 查询刷新任务记录
Admin 页面自动排除(不走 CDN 替换)
字体图标跨域检测:主动探测 CDN 字体响应头是否包含
Access-Control-Allow-Origin,避免 QQ/微信内嵌浏览器、Firefox 等环境字体图标不显示
文件结构
plugin/xnx_edgeone/
├── conf.json
├── install.php / uninstall.php
├── setting.php + setting.htm
├── update.md
├── model/
│ └── EdgeOneService.php # 核心服务(URL 替换 / API 调用 / Token 鉴权 / 缓存刷新 / CORS 检测)
├── hook/
│ ├── model_url_end.php # 拦截 url() 输出做资源 URL 替换
│ ├── header_start.htm # 修改 view_url/upload_url + 注册输出缓冲 + DNS 预解析
│ ├── header_meta_before.htm # dns-prefetch / preconnect 标签输出(带 crossorigin)
│ ├── footer_end.htm
│ ├── post_post_end.php # 回帖后自动刷新缓存
│ ├── post_update_post_end.php # 编辑回帖后自动刷新
│ └── thread_create_thread_end.php # 发帖后自动刷新
配置流程
后台启用插件
进入「插件设置」→「基本设置」→ 填写 CDN 加速域名(如 https://cdn.example.com)
勾选需要加速的资源类型,填写排除路径(一行一个)
切换到「API 配置」→ 填写腾讯云 SecretId / SecretKey / ZoneId(用于缓存刷新)
可选:开启「Token 鉴权」→ 填写鉴权密钥、参数名、过期时长(需与 EdgeOne 控制台配置一致)
测试:点击「测试连接」验证 API 密钥,访问前台页面查看资源是否已替换为 CDN 域名
必做:配置 CORS 跨域(见下方「字体图标跨域配置」章节)
字体图标跨域配置(重要)
问题背景
浏览器安全策略要求跨域加载的字体文件(woff2/woff/ttf/otf/eot)必须返回 Access-Control-Allow-Origin 响应头,否则静默拒绝加载。
CSS / JS / 图片:跨域宽松,正常加载
字体文件:跨域严格,无 CORS 头则拒绝
EdgeOne 默认不会自动给字体响应加 CORS 头。若未配置,会出现以下现象:
Chrome / Safari:图标正常显示(宽容)
QQ 内嵌浏览器、微信内嵌浏览器、Firefox:字体图标全部不显示(图标位置空白或显示方框)
EdgeOne 控制台配置步骤
登录 腾讯云 EdgeOne 控制台 → 选择站点
进入「站点加速 → 规则引擎」→ 创建规则
匹配条件:文件后缀 等于
woff2;woff;ttf;otf;eot执行操作:修改 HTTP 响应头 → 添加
Access-Control-Allow-Origin: *(多站点共享)或具体源站域名https://你的域名保存规则
后台验证
回到本插件设置页 → 「字体图标跨域检测」卡片 → 点击「检测 CORS 配置」按钮,服务器端会主动 HEAD 请求 CDN 上的字体文件并检查响应头,返回以下状态:
状态 | 含义 | 处理建议 |
|---|---|---|
| CORS 已配置 | 字体图标可正常跨域加载 |
| 未配置 CORS | 按「EdgeOne 控制台配置步骤」配置 |
| 字体文件 404 | 检查 EdgeOne 是否已正确接入源站 |
| CDN 不可达 | 检查加速域名是否生效、网络是否通 |
| 检测异常 | 查看 message 字段的详细错误 |
| 插件未启用 | 先启用插件并配置加速域名 |
配置后刷新缓存
CORS 规则生效后,CDN 节点缓存的字体仍是旧的(无 CORS 头),需点击「仅刷新字体目录缓存」按钮强制 CDN 回源拉取带新响应头的字体文件,等待 1-2 分钟后重新检测确认。
配置指南弹窗
设置页右上角「查看配置指南」按钮提供完整规则引擎配置参考,包含:
缓存 TTL 规则建议(首页 60s / 版块 60s / 帖子详情不缓存 / API 不缓存)
CORS 跨域配置说明
智能加速开启指引
验证步骤