从零搭建这个个人博客:GitHub、Cloudflare Pages 与 R2 的实践记录
记录这个个人博客从能跑起来到适合长期写作的过程,也整理一下 GitHub、Cloudflare Pages、R2、Astro 和后台编辑体验之间的取舍。
这几天把个人博客从“能跑起来”慢慢整理到“真正能长期使用”的状态,过程中也重新想了一遍:个人博客到底需要什么。
我现在的答案比较简单:稳定、便宜、好写、好维护。
为什么选这套方案
这个博客现在主要由几部分组成:
- Astro 负责生成静态页面
- GitHub 保存文章和代码
- Cloudflare Pages 负责部署
- Cloudflare R2 存放图片
- Pagefind 提供站内全文搜索
- Leaflet 展示文章里的地理位置
这套组合最大的好处是足够轻。文章本质上还是 Markdown 文件,代码和内容都在 GitHub 里,哪怕以后换平台,也不会被某个后台系统锁死。
写博客体验比技术更重要
一开始我更关注部署、存储、自动化这些技术细节。但真正开始写文章之后,会发现后台编辑体验才是影响频率的关键。
如果每次写文章都要想 frontmatter 怎么填、图片怎么传、标签怎么写、发布日期会不会报错,那写作本身就被打断了。所以后台现在做了几件事:
- 标题、正文、摘要、标签、封面都可以直接填写
- 正文使用纯 Markdown 编辑,减少移动端切换和预览问题
- 上传图片后直接放到 R2,并插入 Markdown 图片链接
- 发布时间默认使用当前时间
- 地理位置自动读取,不需要手动填写
- 没写摘要时自动取正文第一段
- 没写封面时自动取正文第一张图片
这些优化看起来都很小,但它们会让写作流程更接近“打开页面就写”。
免费套餐够不够用
对个人博客来说,目前这套免费额度已经足够。静态站点本身访问成本很低,图片放在 R2,搜索索引在构建时生成,不需要维护数据库,也不需要长期运行服务器。
真正需要注意的是部署链路不要重复触发。GitHub Action 和 Cloudflare Pages 如果都在每次提交后构建,就容易排队,也会增加排查成本。个人博客一天不会发布很多篇文章,部署逻辑越简单越好。
后面还想继续优化什么
接下来我更想把注意力放在阅读体验上,而不是继续堆功能。
比如:
- 首页文章列表更清晰
- 标签页更像真正的归档入口
- 手机端写文章不要拥挤
- 图片加载速度更稳定
- 地图展示只在需要时加载
个人博客不需要像复杂 CMS 一样什么都有。它更像一个长期使用的工作台:打开要快,写作要顺,发布要稳,内容要能沉淀下来。
这次搭建过程也提醒我,技术方案只是底座,真正决定一个博客能不能坚持下去的,是写作体验。