Pages Worker 体积治理
删掉动态 next/og 路由,middleware 与前台 API 不再 import 完整文章 catalog;完整构建 Edge Function Routes 从 86 降到 83,估算 gzip 约 2.38MB。
把 2aran.com 最近一次 Cloudflare 架构优化摊开:Pages Worker 体积治理、public/admin/API 边界、D1/R2 数据分层、评论通知与内容索引,放回技术架构、安全防御、运营飞轮、市场设计四个维度里对照。
删掉动态 next/og 路由,middleware 与前台 API 不再 import 完整文章 catalog;完整构建 Edge Function Routes 从 86 降到 83,估算 gzip 约 2.38MB。
新增 pages:build:public 构建脚本,临时排除 app/(admin) 与 app/api/admin;公开 Worker 路由降到 43,估算 gzip 约 1.25MB。
灵感流机器人视频从本地 public 大文件迁到 R2 feed/ 前缀,避免 Pages 静态资源与仓库体积继续膨胀。
/community 从二维码介绍页改成讨论中心,展示最新评论并跳回原文章;通知、评论、点赞开始成为前台主功能。
| 部署 | Cloudflare Pages + Functions;公开构建已准备 pages:build:public |
|---|---|
| Worker 边界 | 完整构建 83 个 Edge Routes / 约 2.38MB;公开构建 43 个 Routes / 约 1.25MB |
| 后台拆分 | 2aran.com /admin/* 已准备跳转 admin.2aran.com;独立后台部署待切换 |
| 动态数据 | D1(留言 / 评论 / 通知 / 用户 / 短链 / content_index 等) |
| 媒体文件 | R2(downloads/ 壁纸和资源;feed/ 大视频;D1 存元数据或引用) |
| 内容与静态资源 | Markdown 详情仍在构建期;标题/摘要/标签开始用 D1 content_index 解耦 |
| 默认语言 | 边缘 Middleware 读 cf-ipcountry:中国大陆→中文,海外→英文 |
| AI 体验 | 浏览器 WebGPU(不进 Cloudflare AI) |
| 四维覆盖 | 技术 4/4 · 安全 3/5 · 运营 2/3 · 市场 1/4 |
这次优化的核心不是“删一点代码”,而是把普通访客需要的公开站、owner 才需要的后台、以及可以独立演进的前台 API 分开。短期先用 public build 贴着 Cloudflare Pages 免费计划边界,长期再拆独立 Worker。
| 阶段 | Routes | 包体 | 说明 |
|---|---|---|---|
| 问题现场 | 86 | > 3MiB | 后台、API、评论、通知、文章动态页都进入同一个 Pages Worker,触到免费计划边界。 |
| 第一批收束 | 83 | ~2.38MB gzip | 移除动态 OG 路由,前台 API 改用轻量 content key,不再拉完整 catalog。 |
| 公开构建 | 43 | ~1.25MB gzip | pages:build:public 排除后台页面与后台 API,贴着边界继续跑公开站。 |
| Surface | 当前状态 | 下一步 | 判定 |
|---|---|---|---|
| 2aran.com | 公开内容、社区、少量前台 API 仍由 Pages 承载 | 使用 pages:build:public 部署公开站点,避免 admin 代码进入访客 Worker | 已用 |
| admin.2aran.com | middleware 已准备 /admin/* 跳转;目录仍在同仓库 | 单独 Cloudflare Pages/Worker 项目,绑定同一个 D1/R2,只给 owner 使用 | 以后再说 |
| api.2aran.com | 评论、通知、积分等前台 API 仍主要是 Next route | 用 Hono 或原生 Worker 收敛成轻 API Worker,公开站只负责页面 | 以后再说 |
| 内容系统 | Markdown 详情仍在构建期,部分列表元数据进入 content_index | title/summary/tags/href 放 D1,正文按体积放 D1 或 R2,减少构建耦合 | 以后再说 |
AI 商业项目四层架构:接入层→应用层→模型层→基础设施层。对照 2aran.com 现状标注判定。
| 组件 | 2aran.com 现状 | 判定 |
|---|---|---|
| Web / H5 | Pages CDN | 已用 |
| iOS / Android | 无 | 暂不需要 |
| Open API | api.2aran.com 规划中,先收敛前台评论/通知/积分 API | 以后再说 |
| SDK / Plugin | 无 | 暂不需要 |
| 组件 | 2aran.com 现状 | 判定 |
|---|---|---|
| 对话引擎 | Web-LLM(浏览器端) | 已用 |
| RAG | 无 | 以后再说 |
| Agent 编排 | 无 | 以后再说 |
| 工作流引擎 | 内容同步、通知批处理后续可用 Workflows/Queues | 以后再说 |
| 权限 / 计费 | GitHub OAuth + 签名 Cookie + Ranbi 雏形 | 已用 |
| 多租户 | 无 | 暂不需要 |
| 审计日志 | 后台操作日志未系统化 | 以后再说 |
| 组件 | 2aran.com 现状 | 判定 |
|---|---|---|
| LLM 网关路由 | 浏览器 Web-LLM 为主;后台模型任务不进公开 Worker | 以后再说 |
| Prompt 管理 | 后台任务已有散点,未形成版本化 prompt registry | 以后再说 |
| 微调 / LoRA | 无 | 暂不需要 |
| 评测基准 | 无 | 暂不需要 |
| 组件 | 2aran.com 现状 | 判定 |
|---|---|---|
| 向量数据库 | 文章详情仍走构建期 Markdown;RAG 搜索后再考虑 Vectorize | 以后再说 |
| 对象存储 | R2:downloads/ 与 feed/ 大文件 | 已用 |
| 消息队列 | 通知/邮件/内容索引异步化后再加 | 以后再说 |
| 容器编排 | Pages Functions;public/admin/API 边界拆分中 | 已用 |
| 可观测性 | Cloudflare Analytics + 构建体积/路由数记录 | 已用 |
| GPU 集群 | 无(浏览器端 WebGPU) | 暂不需要 |
| CDN / WAF | Cloudflare CDN | 已用 |
| 密钥管理 | Cloudflare 环境变量 / Secrets | 已用 |
纵深防御五层:网络→应用→数据→模型→合规。2aran.com 在网络和应用层有较好覆盖,数据安全部分依赖平台,模型安全与合规尚空白。
| 组件 | 2aran.com 现状 | 判定 |
|---|---|---|
| TLS 1.3 | Cloudflare 自动 TLS | 已用 |
| WAF | Cloudflare 内置 | 已用 |
| DDoS 防护 | Cloudflare L3/L4/L7 | 已用 |
| IP 白名单 | 无 | 暂不需要 |
| 组件 | 2aran.com 现状 | 判定 |
|---|---|---|
| OAuth 2.0 | GitHub OAuth + 签名 Cookie | 已用 |
| RBAC | owner-only(AdminPageGate) | 已用 |
| 限流 | 评论/访客接口有 D1 基础限流,垃圾量上来再加 Turnstile | 已用 |
| 输入校验 | API 层基础校验 | 已用 |
| CSP | next.config.js headers | 已用 |
| 组件 | 2aran.com 现状 | 判定 |
|---|---|---|
| AES-256 at rest | D1/R2 平台级加密 | 已用 |
| 数据脱敏 | 公开展示字段和后台字段已分层,未做统一脱敏库 | 以后再说 |
| DLP | 无 | 暂不需要 |
| 审计日志 | 后台拆出后应单独补操作审计 | 以后再说 |
| 备份 | D1 导出 + Git 仓库 | 已用 |
| 组件 | 2aran.com 现状 | 判定 |
|---|---|---|
| Prompt 注入防御 | 无(浏览器端推理) | 暂不需要 |
| 越狱防护 | 无 | 暂不需要 |
| 数据泄露防护 | 无 | 暂不需要 |
| 幻觉监控 | 无 | 暂不需要 |
| 模型水印 | 无 | 暂不需要 |
| 对齐测试 | 无 | 暂不需要 |
| 组件 | 2aran.com 现状 | 判定 |
|---|---|---|
| GDPR | 无 | 暂不需要 |
| 数据安全法 | 无 | 暂不需要 |
| 算法备案 | 无 | 暂不需要 |
| 隐私影响评估 | 无 | 暂不需要 |
双飞轮模型:数据飞轮(用户交互→反馈标注→模型迭代→体验提升)驱动产品进化,增长飞轮(种子用户→口碑→付费→再投入)驱动商业增长。
| 环节 | 2aran.com 现状 | 商业项目需要 | 判定 |
|---|---|---|---|
| 用户交互 | 留言、评论、点赞、通知、社区最新评论、PV 存 D1 | 完整行为埋点 | 已用 |
| 反馈标注 | 评论/点赞是弱反馈,尚未进入内容推荐 | 人工/自动标注管线 | 以后再说 |
| 模型迭代 | 浏览器端推理,无迭代 | A/B 测试 + 模型灰度 | 暂不需要 |
| 体验提升 | Worker 体积、评论入口、R2 视频等已由真实问题驱动优化 | 数据驱动迭代 | 以后再说 |
| 环节 | 2aran.com 现状 | 商业项目需要 | 判定 |
|---|---|---|---|
| 种子用户 | GitHub/Google 登录用户 + 讨论中心 | 目标人群获客 | 以后再说 |
| 口碑传播 | 社交分享、RSS、社区最新评论 | 推荐体系 + 裂变机制 | 以后再说 |
| 付费转化 | 赞助和 Ranbi 雏形,未形成权益 | 计费系统 + 订阅管理 | 以后再说 |
| 再投入 | 无 | 收入反哺产品 | 暂不需要 |
三层市场(C端/SMB/B端)× 四种定价模式 × 四阶段进入路径。2aran.com 目前是个人站,无商业设计;但如果未来做 AI 产品化,这些维度都需要补齐。
| 层级 | 模式 | 2aran.com | 判定 |
|---|---|---|---|
| C 端市场 | 免费内容/工具 → 赞助/会员权益 | 个人内容、Web-LLM、讨论中心已有入口 | 以后再说 |
| SMB 市场 | API/SDK → 按量计费 | api.2aran.com 仅规划为轻前台 API,不作为商业 API | 暂不需要 |
| B 端市场 | 私有部署 → 年度合同 | 无 B 端方案 | 暂不需要 |
| 模式 | 说明 | 判定 |
|---|---|---|
| 按量计费 | Token / API 调用 / 存储量;本站暂不开放商业 API | 暂不需要 |
| 订阅制 | 月/年费 + 阶梯权益;可与 Ranbi/赞助结合 | 以后再说 |
| 混合模式 | 基础订阅 + 超额按量 | 暂不需要 |
| 效果计费 | 按完成任务 / 节省成本分成 | 暂不需要 |
| 阶段 | 说明 | 2aran.com 对照 |
|---|---|---|
| 垂直场景突破 | 选一个高价值垂直场景,做到极致 | /web-llm 是 AI 体验入口 |
| 横向能力扩展 | 从单场景扩展到多场景覆盖 | 调研内容体系可复用 |
| 平台生态构建 | 开放 API / SDK,引入第三方 | 先拆 api.2aran.com,只服务本站前台 |
| 全球化 | 多语言 / 多区域 / 多币种 | Middleware 有 i18n 雏形;默认语言仍在边缘判断 |
2aran.com 的 Cloudflare 实装快照:架构数据流、产品判定、存储选型、R2 扩展场景。
点击上方统计卡或下方筛选器过滤;当前可见 22 项。
| 层级 | 产品 | 职责 | 判定 | 备注 |
|---|---|---|---|---|
| 入口 & 托管 | Pages | Next.js SSR、静态资源 CDN、公开站点宿主 | 已用 | 项目主战场;新增 pages:build:public 用于排除后台,避免公开 Worker 继续膨胀 |
| 边缘计算 | Workers / Functions | 前台 API、OAuth、Edge Session、Middleware | 已用 | next-on-pages 仍有运行时包装成本;短期靠 public build 贴边,长期拆 admin/API Workers |
| 关系型数据 | D1 | 结构化数据 + 小密文 + 内容索引 | 已用 | binding = DB;留言、评论、通知、短链、content_index 等共用,元数据指向 R2 对象 |
| 对象存储 | R2 | 壁纸、下载资源、feed 大视频 | 已用 | binding = MEDIA;downloads/ 与 feed/ 前缀,D1/代码只保留 key 或 URL |
| 产品 | 类型 | 个人站场景 | 判定 |
|---|---|---|---|
| D1 | SQL(SQLite) | 留言、评论、点赞、通知、短链、邮箱注册、PV、content_index | 已用 |
| R2 | 对象存储(S3 兼容) | 壁纸库、可下载文件、feed 大视频;D1 存元数据或引用 | 已用 |
| KV | 键值缓存 | 全站配置缓存、feature flag、轻量内容列表缓存 | 以后再说 |
| Durable Objects | 强一致有状态 | 实时聊天室、WebSocket Agent、多人协作 | 以后再说 |
| Queues | 异步队列 | 批量邮件、异步转码、离线任务 | 以后再说 |
| Hyperdrive | 外部 Postgres 加速 | 已有 D1,无需外部 DB | 暂不需要 |
| 产品 | 职责 | 判定 | 原因 |
|---|---|---|---|
| Workers AI | 边缘推理 Llama / Qwen 等 | 暂不需要 | /web-llm 已在浏览器本地跑模型 |
| AI Gateway | 多模型路由、缓存、限流 | 以后再说 | 如果后台模型任务和公开 AI 能力需要统一路由,再从 admin/API Worker 外挂 |
| Vectorize | 向量检索 / RAG | 以后再说 | 文章 catalog 外置后,若做语义搜索或 RAG,再补向量索引 |
| Agents SDK + DO | 有状态 Agent、MCP、WebSocket | 以后再说 | 若做服务端 Agent 再考虑 |
行/列、SQL 查询、小文本密文
已用:stomps、comments、shared_notes…
别放:图片、视频、大 PDF
S3 兼容对象存储,出流量免费
已用:壁纸/可下载资源/feed 视频(binding MEDIA,前缀 downloads/、feed/)
别放:高频小块写入(SQL 查询适合 D1)
全球键值缓存,最终一致
适合:配置、A/B、短 TTL 内容列表缓存
content_index 刚落 D1,先不引入第二套读路径
和 AWS 对照:S3 = 对象存储行业标准; R2 = S3 兼容 + 免 egress。 D1 = Database 1,Cloudflare 第一条 SQL 产品线。
R2 已接入壁纸/可下载资源(绑定 MEDIA,前缀 downloads/),以下场景可扩展其用途。核心原则:D1 存元数据 + R2 存大文件本体。
| 场景 | 建议动作 |
|---|---|
| 评论 / 留言要附图、用户上传头像 | 扩展现有 R2 用途;D1 只存元数据(key、owner、时间) |
| 语音任务存 mp3/wav 原音 | R2 存音频;D1 存转写文本和索引 |
| 调研文改成后台发布、不 deploy 就更新 | title/summary/tags/href 进 D1 content_index;正文按体积放 D1 或 R2;可选 KV 做列表缓存 |
| Pages Worker 再接近 3MiB | 继续拆 admin.2aran.com 与 api.2aran.com,公开站只保留页面和极少数读 API |
| 要做服务端 Chat Agent / MCP | Agents SDK + Durable Objects;R2 可选存附件 |
| D1 单条密文 > 几百 KB | 大 blob 迁 R2,D1 留 slug + envelope 元数据 |
| 垃圾注册 / 刷接口明显增多 | Turnstile + 现有 D1 限流双保险 |
D1 → 元数据(谁、何时、文件名、R2 key) R2 → 实际文件
刻意不加:Workers AI · Stream · Images · Hyperdrive · Browser Rendering
返回 多维页面 · 判定基于 wrangler.toml、next-on-pages 构建日志与本次 public/admin/API 拆分记录(2026-07 快照)