Files
wordpress-kratos-yang/inc
laoyang 40e09b6309 3.2.34 新增「CDN 加速」:地址 + 白名单 + 黑名单,黑名单优先 #3
后台「主题设置」新增第十一个标签页(邮件通知之后、自定义代码之前),
只有三个输入框:CDN 地址、白名单、黑名单。地址留空即关闭功能。

实现(inc/theme-cdn.php,新增):
- 输出缓冲挂在 template_redirect 优先级 1,改整页 HTML 的资源地址,
  覆盖主题 enqueue 之外的文章图片、插件输出、区块图片。
- 规则按字面形态自动识别七种写法:* / 扩展名 / 扩展名列表 /
  路径前缀 / 通配符 / 路径子串 / ~正则~。
- 单个纯字母词(jpg 与 uploads 分不出谁是扩展名)同时按扩展名与
  路径子串匹配,两个含义互斥,避免 uploads 规则静默失效。
- 黑名单先于白名单判定;硬性排除不受两套名单影响:以 / 结尾、
  页面/动态后缀、无扩展名、wp-admin/wp-json/wp-cron/xmlrpc/feed、
  非本站域名、非 http(s) 协议。
- 后台/REST/AJAX/feed/cron/定制器预览/CLI 一律不改写。
- 查询串与锚点原样保留(?ver= 丢了会一直吃旧缓存)。
- 子目录站:判规则用完整路径,拼 CDN 时剥掉站点子目录。
- 写错的正则编译时丢弃,避免每个资源抛一条 warning 刷满日志。

验证:
- inc/theme-cdn.php 逻辑探针 92/0,反向验证 21/0(M1~M15 逐条注入,
  含 M5 拆成三条覆盖协议相对/绝对/整页三条分支,M10/M13 组合注入)。
- 后台探针 56/0(真实渲染 + 几何 + 类型 + 说明块),反向验证 15/0。
- 包契约 69/0,反向验证 23/0(改 zip 内字节,不改源码)。
- 旧探针回归:toc330 101/0、admin330 88/0、admin328 13/0、
  pkgcheck331/332/333 全绿、e2e322/323 通过。
- 线上仅在 theme-update/ 发 zip + readme + update.json,未解包覆盖服务器主题目录。
2026-10-25 16:15:09 +08:00
..