设计笔记
随笔 约 6 分钟阅读

将 Typecho 跑在 Cloudflare Workers

PortingTypecho2Workers.jpeg

一、为什么想折腾这个?

其实工作之后博客就很少更新了。很多时候脑子里冒出一个不错的想法,真打算坐下来写的时候,又总觉得内容太简单、不太值得分享,于是慢慢养成了只写“笔记”的习惯——记录一些零碎的想法和短篇随笔。

然而,一个更新频率并不高的博客,传统架构的维护成本却一点也没少:

  • 服务器维护繁琐:要维护服务器、运行环境、程序更新,偶尔还得防范扫盘和挂马;
  • 资源浪费严重:就像一台服务器二十四小时开着,却只为了一个偶尔才有人访问的页面,开销不少,性价比极低。

中途我也动过把博客彻底迁移到 Hugo、Hexo 这类静态博客(SSG)上的念头。静态托管在 GitHub Pages 或 CDN 上确实能免去服务器运维,但实际体验下来却发现并不顺手:

  • 发布流程冗长:每次写篇随笔或改个错字,都得开本地编辑器编译、提交 Git 仓库、再等 CI/CD 部署,完全失去了随手记录的即时感;
  • 评论与互动割裂:静态博客无法原生处理动态评论,只能依赖第三方挂件(如 Waline、Twikoo 等)或自建服务,评论管理和审核都极为割裂。

既想要静态博客的免运维、低成本与高并发,又想要动态博客的在线写作后台、原生评论互动与灵活扩展,传统方案似乎总有遗憾。


二、最后选择了什么?

带着这些诉求,我把目光投向了以 Cloudflare 为代表的现代 Serverless / 边缘计算(Edge Computing)平台。

Cloudflare 这位“赛博大善人”拥有极为完善的自研闭环生态——遍布全球 300+ 节点的 Workers 运行时,搭配自带的 D1 关系型数据库、R2 对象存储、Workers KV 键值缓存,完全不需要东拼西凑第三方服务。

确定 Cloudflare Workers 这个大方向后,具体博客程序的选型也经历了几轮尝试与筛选:

  1. 从零自研手搓:最初尝试借助 AI 辅助从零开发一套全新的边缘博客系统,但很快发现太费 Token 了——便宜的模型太笨,搓起来纯粹浪费时间;聪明的模型 Token 烧起来,钱包实在吃不消;
  2. 现有开源项目(如 Rin):试用了社区里基于 Cloudflare 构建的现代博客项目 Rin,但上手后不太符合我的个人习惯,例如评论缺乏层级嵌套盖楼、对边缘节点的缓存机制利用不够充分;
  3. 最终敲定 Typecho-CF(现重构为 Typecho-Workers):早前也用过 Typecho,管理后台用起来非常顺手,底层数据结构也熟悉,所以可以比较无损地把历史数据(包括笔记部分)一起迁移过来。

最终,我确立了技术路线:基于 Typecho-CF —— Astro (SSR mode) + Cloudflare Workers + D1 + R2 + KV,重塑经典 Typecho!


三、骨感的现实

理想很丰满,现实却极为骨感。本以为直接用 Typecho-CF,把代码往 Cloudflare 上一扔就能直接用了,但真正动手迁移和上线后,却接二连三地撞上了一堵堵南墙:

  1. 初始化 10ms CPU 超时惊魂:刚把程序部署上去,一点击安装就直接报 Error 1102: Worker exceeded CPU time limit,连管理员账号都无法初始化;
  2. D1 数据库配额一晚暴走超标近2倍:好不容易把历史数据导入,在没有缓存的情况下跑了一晚,第二天一早控制台报警:D1 读行数暴增,直接超出了免费配额近2倍;
  3. 传统 SSR 动态渲染打穿缓存:文章页包含了访客 Cookie、待审核评论、个性化表单回填,导致页面 HTML 无法直接被 CDN 缓存,每一次访客刷新都在疯狂击穿数据库;
  4. 微动态与多媒体体验缺失:写长文心理负担重,想随手发点像朋友圈一样的图文与音视频随感,原版却完全缺乏现代化的微贴/笔记系统;
  5. 管理后台 8 个列表查询缓慢:后台管理列表每次点击都要直查 D1,不仅有明显的顿挫感,还持续消耗宝贵的数据库读配额;
  6. 异步评论表单防垃圾失效:为了缓存将评论改为异步动态加载后,传统的服务端静态蜜罐防刷机制随之失效,容易被脚本垃圾评论灌水。

四、一系列大刀阔斧的重构,最终达到了什么效果?

在接下来的一两周时间里,我利用 AI 深入底层对代码库展开了一系列大刀阔斧的重构与优化——从底层认证密码安全加固、全功能数据导入脚本、四级与平台层零 CPU 缓存,到笔记多媒体系统重写、Warm 主题全面动静分离,以及引入后台查询读模型缓存(Query Cache)与现代插件生态。

这一整套系统性措施落地后,最终达成的效果超出了最初的预期:

1. 资源与成本收益对比

核心指标 改造前(传统 SSR 模式) 改造后(当前架构) 收益变化
Worker CPU 消耗 15 ~ 35 ms 0 ms(平台层命中直接由 CDN 直出) 节约 100% CPU 计费
单日数据库读取量 9M 行(Free Plan 5M/日) 80K(Free Plan的零头) 暴降 98.7%
全站平均 TTFB 延迟 180 ~ 350 ms 15 ~ 45 ms(边缘节点直出) 提速 6~10 倍
月度账单 需维护云服务器费用 $0.00(完全落在 Free Plan 内) 真正实现零成本白嫖
Google PageSpeed 性能评分 70 ~ 85 分 98 ~ 100 分(Performance 全绿) 极致前端加载性能

2. 整体体验跃升

  • 极速丝滑的阅读体验:在 InstantClick 预加载与静态化边缘缓存的配合下,全站点击切换几乎是“零白屏瞬开”;
  • 随心所欲的记录方式:写长文有 Scribe AI 助手辅助,发随笔有精致的富媒体九宫格微动态,想写就写毫无负担;
  • 后台秒开的操控感:管理列表彻底告别慢速查库,点开即呈现。

一系列重点改动与升级,后续会陆续整理出来分享。