EdgeOne加速

EdgeOne加速

通过腾讯云 EdgeOne 全球边缘节点加速静态资源(CSS/JS/图片/字体)和动态页面

插件 v1.0.0 贰先生 性能 付费 20 金币

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  # 发帖后自动刷新

配置流程

  1. 后台启用插件

  2. 进入「插件设置」→「基本设置」→ 填写 CDN 加速域名(如 https://cdn.example.com

  3. 勾选需要加速的资源类型,填写排除路径(一行一个)

  4. 切换到「API 配置」→ 填写腾讯云 SecretId / SecretKey / ZoneId(用于缓存刷新)

  5. 可选:开启「Token 鉴权」→ 填写鉴权密钥、参数名、过期时长(需与 EdgeOne 控制台配置一致)

  6. 测试:点击「测试连接」验证 API 密钥,访问前台页面查看资源是否已替换为 CDN 域名

  7. 必做:配置 CORS 跨域(见下方「字体图标跨域配置」章节)

字体图标跨域配置(重要)

问题背景

浏览器安全策略要求跨域加载的字体文件(woff2/woff/ttf/otf/eot)必须返回 Access-Control-Allow-Origin 响应头,否则静默拒绝加载。

  • CSS / JS / 图片:跨域宽松,正常加载

  • 字体文件:跨域严格,无 CORS 头则拒绝

EdgeOne 默认不会自动给字体响应加 CORS 头。若未配置,会出现以下现象:

  • Chrome / Safari:图标正常显示(宽容)

  • QQ 内嵌浏览器、微信内嵌浏览器、Firefox:字体图标全部不显示(图标位置空白或显示方框)

EdgeOne 控制台配置步骤

  1. 登录 腾讯云 EdgeOne 控制台 → 选择站点

  2. 进入「站点加速 → 规则引擎」→ 创建规则

  3. 匹配条件:文件后缀 等于 woff2;woff;ttf;otf;eot

  4. 执行操作:修改 HTTP 响应头 → 添加 Access-Control-Allow-Origin: *(多站点共享)或具体源站域名 https://你的域名

  5. 保存规则

后台验证

回到本插件设置页 → 「字体图标跨域检测」卡片 → 点击「检测 CORS 配置」按钮,服务器端会主动 HEAD 请求 CDN 上的字体文件并检查响应头,返回以下状态:

状态

含义

处理建议

ok

CORS 已配置

字体图标可正常跨域加载

missing

未配置 CORS

按「EdgeOne 控制台配置步骤」配置

no_font

字体文件 404

检查 EdgeOne 是否已正确接入源站

unreachable

CDN 不可达

检查加速域名是否生效、网络是否通

error

检测异常

查看 message 字段的详细错误

disabled

插件未启用

先启用插件并配置加速域名

配置后刷新缓存

CORS 规则生效后,CDN 节点缓存的字体仍是旧的(无 CORS 头),需点击「仅刷新字体目录缓存」按钮强制 CDN 回源拉取带新响应头的字体文件,等待 1-2 分钟后重新检测确认。

配置指南弹窗

设置页右上角「查看配置指南」按钮提供完整规则引擎配置参考,包含:

  • 缓存 TTL 规则建议(首页 60s / 版块 60s / 帖子详情不缓存 / API 不缓存)

  • CORS 跨域配置说明

  • 智能加速开启指引

  • 验证步骤


截图 2
v1.0.0 2026-07-23
作者信息
贰先生
贰先生 贰先生
XIUNOX开发者
13
应用
52
安装
2026-06
加入
应用详情
应用分类 插件
版本 v1.0.0
适用版本 1.1
开发者 贰先生
下载量 0
浏览 12
更新时间 2026-07-23
发布时间 2026-07-23
最新回复 1
查看全部
  • AI Lv1

    感谢贰先生的分享。该插件功能设计全面,特别是针对字体图标 CORS 的检测与配置指引非常贴心,解决了社区常见的显示问题。

    关于技术实现,有几点建议供参考:

    1. URL 替换逻辑:在 header_start.htm 中通过输出缓冲替换硬编码路径时,请确保不影响动态生成的 JSON API 数据或后台管理界面(插件已做排除,需验证彻底性)。
    2. 缓存刷新策略:自动刷新帖子详情和列表页是亮点,但需注意高频发帖时的 API 调用频率限制,建议在 post_post_end.php 中加入简单的防抖或队列机制,避免瞬时并发过高导致 EdgeOne API 限流。
    3. 安全性:Token 鉴权采用 MD5+Timestamp 是常见做法,但请确认密钥存储安全,且前端 JS 中不应暴露 SecretKey,仅用于生成签名参数。

    整体而言,这是一个实用且文档详尽的插件,期待后续版本能支持更细粒度的缓存规则配置。【以上由 AI 自动回复,仅供参考】

    5小时前
查看全部评论 / 发表评论
完整评论功能在讨论帖中,点击前往