Files
tamabox/outputs/r2-assets-cdn-audit-2026-09-05.md
T
tamakyi e3e59e7c69 chore: baseline snapshot before moderation-strictness feature
Repo .git was damaged (refs/ missing, index truncated, object store near-empty).
Repaired via git init (rebuilt refs), stale index preserved as .git/index.corrupt-20260910.bak,
then full worktree committed as a rollback baseline.
2026-09-10 10:56:27 +08:00

6.9 KiB
Raw Blame History

R2 静态资源盘点与国内加速建议(2026-09-05)

背景:uikit 已迁移 cdnjs.snrat.com(国内 4-5× 提速)。本次全量盘点仍挂在 r2.337845818.best(Cloudflare 链路、未接 EdgeOne)的静态资源,逐文件做 官方源 hash 校验 + 国内实测,给出分类迁移建议。

0. 关键结论速览

# 结论 级别
1 截图 1100ms 来自 PageSpeed(海外探测),是 CF 链路 + Rocket Loader 的组合;国内 EdgeOne 路径干净无 rocket-loader,国内体验不受其影响 🔴 认知修正
2 国内真实瓶颈 = r2.337845818.best 本身(CF 国际链路),实测每个资源 0.72–1.10s,与"哪个库"无关,是源的问题 🔴
3 公共 CDN ≠ 快:cdnjs.cloudflare/jsdelivr 国内实测 0.6–1.8s,与 R2 同级;真正快的是 snrat(cdnjs 国内镜像)0.15–0.42s 🟠 关键认知
4 6 个 JS 库经 sha256 校验 = 纯官方原版,可安全迁 snrat(2–7.4× 提速) 🟢
5 waline-no-commits.css / easy.qrcode(remake) / time.box.js / neko-pixel / 图片图标 = 定制或专属文件,无公共源,只能自托 🟡
6 根治定制文件的唯一途径:把 R2 静态域名接入 EdgeOne 国内加速(方案 A),与库迁移可叠加 🟡 推荐

1. 全量清单(去重后 17 项,含已注释项)

A 组:官方库,sha256 与官方完全一致 → 可迁 cdnjs.snrat.com ✅

文件 大小 加载位置 加载方式 国内实测 R2→snrat 提速
cdn/lib/alpinejs/3.9.0/cdn.min.js 38KB header 全站 defer 1.10s → 0.15s 7.4×
cdn/lib/jquery/3.7.1/jquery.min.js 88KB 二维码页(list/not-found) 按需 0.83s → 0.17s 4.9×
cdn/lib/vconsole/3.12.1/vconsole.min.js 214KB header(VConsole 条件) 同步 0.72s → 0.20s 3.5×
cdn/lib/cropperjs/1.6.2/cropper.min.js 37KB 头像裁剪页 按需 0.81s → 0.22s 3.6×
cdn/lib/dayjs/1.10.8/dayjs.min.js 6.5KB header 全站 defer 0.85s → 0.42s 2.0×
uikit css/js/icons — header 全站 已迁 ✅ — 4.3–4.9×

校验方式:R2 文件与 snrat/cdnjs/jsdelivr 官方逐一 sha256 比对,全部一致 (jquery/dayjs/alpine/cropperjs/vConsole 同 cdnjs 官方发行版;waline.js 同 @waline/[email protected] 官方发行版)。

B 组:官方原版但公共源国内不优 → 暂留 R2 / 随方案 A

文件 大小 说明 判断
cdn/lib/waline/2.15.8/waline.js 164KB sha256 = 官方原版,但 @waline/client 只发 jsdelivr/unpkg(无 cdnjs 收录),jsdelivr 国内实测 ~0.99s > R2 0.79s 🟡 迁移无收益,暂留
cdn/waline/.../waline-no-commits.css 19KB 定制:193 规则与官方一致,39 条差异全部是把 .wl-card*(评论卡片/管理操作/徽章/状态/内容)设 display:none —— 即"只留评论区容器、不显示评论列表"的刻意定制,不可换官方 css 🟡 media=print 非阻塞,暂留

C 组:专属/定制文件,无公共源 → 留 R2,等方案 A 🔴

文件 用途 说明
cdn/time.box.js 全站 defer 站点专属脚本
cdn/js/remake/easy.qrcode.min.js 二维码页 remake 改造版,公共 qrcodejs 功能不等价
cdn/lib/neko-pixel/0.0.21/{style.css, neko-pixel-app.umd.js} IsPixel 页 npm registry 查无此包,无公共源
tamabox/tamabox_low.png logo/favicon/og 站点资源
tamabox/icon/social/*.png ×5 社交图标 站点资源

D 组:已注释、未启用(清理候选)

  • cdn/busuanzi.pure.mini.js(header 注释)— UV/PV 已由 vercount 承担
  • oss-to-r2/nekobox/.../waline.js + waline-no-commits.css(home.html 注释)

2. 实测数据

国内本机(2026-09-05,3 次全量下载取中位)

资源 R2(CF 链路) snrat(国内节点)
jquery 0.83s 0.17s
dayjs 0.85s 0.42s
alpinejs 1.10s 0.15s
cropperjs 0.81s 0.22s
vconsole 0.72s 0.20s
waline.js(仅 jsdelivr 可比) 0.79s jsdelivr 0.99s ❌
专属文件(png/time.box.js) 0.72–1.10s 无公共对应

R2 所有资源稳定落在 0.72–1.10s(连接的是 Cloudflare AMS 国际链路)。 对照参考:snrat 上 uikit 全量 263KB 约 0.25s —— 差的不是文件,是源。

修正认知

  • Rocket Loader 只影响走 CF 的海外路径(PageSpeed/GTmetrix/测试域名), 国内 EdgeOne 路径的 HTML 实测无 rocket-loader。国内用户感受到的"慢" 主要是 R2 的 CF 国际链路,不是 Rocket Loader。
  • PageSpeed 分数低的部分原因(海外 1100ms 资源)仍可靠关 Rocket Loader 改善海外体验,但对国内数字无影响。

3. 迁移方案对比

方案 做法 覆盖范围 工作量 模板改动 风险
A. R2 接入 EdgeOne(根治) r2.337845818.best 走 EdgeOne 国内加速(源站=CF R2 公共端点),沿用 dnspod 境内/境外分流经验 全部文件:A+B+C 组一次解决 EdgeOne 控制台 + DNS 记录 无(域名不变) 🟢 低,但涉及账号/计费与回源配置
B. 库迁 snrat(对症) A 组 5 个库 URL 换 cdnjs.snrat.com 仅官方库 每库改 1 处模板 URL 5 处 🟢 极低(sha256 已验证)
A+B 组合(推荐) 先 B 快速见效,再 A 收尾定制文件 全部 — 5 处 + 控制台 🟢

方案 A 的核心价值:B/C 组那些"无公共源"的定制文件(no-commits.css、 easy.qrcode remake、time.box.js、neko-pixel、图片)在 R2 上每请求 ~0.8s, 只有接国内加速才能根治;逐个找公共源既找不到也不值得。 注:EdgeOne 加速的对象是静态资源分发,R2 仍保留在 Cloudflare 作为 源站与海外出口,国内节点回源缓存后 CDN 分发。


4. 建议落地批次(待批准)

  • 🟢 P1(已做):uikit 三件套 → snrat ✅ 已上线测试环境
  • 🟢 P1-批量 B:alpine/dayjs(header 全站)→ snrat;jquery/cropperjs/vconsole(按需页)→ snrat,共 5 处 URL
  • 🟠 P2-方案 A:r2.337845818.best 接入 EdgeOne 国内加速(需你在 EdgeOne 控制台操作/确认计费;我可以先帮你查 EdgeOne 对 R2 自定义域作源站的官方支持方式)
  • 🟡 P3:waline.js/no-commits.css 随方案 A 覆盖;清理 D 组注释残留;PageSpeed 若仍需优化海外分可关 CF Rocket Loader(per-zone)

5. 风险与回滚

  • 全部 A 组迁移经 sha256 验证 = 官方原版,无内容差异风险;回滚=改回 R2 URL
  • waline-no-commits.css 不可替换为官方 waline.css(会显示被隐藏的评论区);若误换,回滚即可
  • 方案 A 若回源/计费踩坑,DNS 一条记录切回原解析即完全回滚