Files
tamabox/outputs/r2-assets-cdn-audit-2026-09-05.md
T
2026-09-08 10:10:44 +08:00

116 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 一条记录切回原解析即完全回滚