文章 2026.11.09

用 Astro + Cloudflare 搭一个零成本内容站

Astro SSR 负责页面渲染,D1 存结构化数据,R2 放图片和视频,免费额度足够个人站点使用。

用 Astro + Cloudflare 搭一个零成本内容站

技术选型

这个站点的全部基础设施都在 Cloudflare 免费额度内:

部分 方案 免费额度
页面 Pages(Astro SSR) 无限静态请求
数据 D1 5GB 存储
媒体 R2 10GB 存储

几个关键点

  1. Astro 使用 output: server 和 @astrojs/cloudflare 适配器,页面在 Worker 里渲染。
  2. 图片和视频不经过构建,直接上传到 R2,通过一个带缓存头的媒体路由读取。
  3. 后台只有一个管理员,用 Cloudflare Access 做身份校验,不需要自己写登录系统。

媒体路由要支持 Range

视频拖动进度条依赖 HTTP Range 请求,所以媒体路由必须返回 206 Partial Content 和正确的 Content-Range 头,否则播放器只能从头播到尾。

const object = await bucket.get(key, {
  range: { offset: start, length: end - start + 1 },
});

成本

个人站点的流量和存储都远低于免费额度上限。唯一需要花钱的地方,可能是域名——但用 *.pages.dev 子域名就完全免费。