从零把博客部署到 Cloudflare Workers(顺手用 KV 存评论)

这篇不是来炫技的,是一份能跟着敲的笔记。你不需要先懂服务器,照着做就行。

为什么是 Workerswocao1

我之前把博客放在一台小服务器上。每个月要记着续费,系统要更新,哪天它崩了我还得爬起来修。后来发现 Cloudflare Workers 这套东西:

  • 免费额度对个人博客基本够用;
  • 不用管服务器,部署就是一条命令;
  • 跑在全球节点上,访客离哪个节点近,就从哪边响应。

如果你的博客访问量不大(个人博客大多如此),Workers 几乎是零成本的。

第一步:一个最小的 Worker

新建一个项目,先写个最简单的 worker.js:

export default {
  async fetch(request) {
    return new Response("你好,世界", {
      headers: { "content-type": "text/html;charset=UTF-8" },
    });
  },
};

本地用 wrangler dev 跑起来,浏览器打开就能看到「你好,世界」。

别小看这几行——它已经是一个 Web 服务了:收到请求,返回一段内容。

第二步:返回真正的网页

博客总不能只显示一句话。我们让它根据网址返回不同内容:

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    if (url.pathname === "/") {
      return html(`<h1>我的博客</h1><p>欢迎来玩</p>`);
    }
    if (url.pathname === "/about") {
      return html(`<h1>关于我</h1>`);
    }
    return new Response("404", { status: 404 });
  },
};

function html(body) {
  return new Response(
    `<!doctype html><html><head><meta charset="utf-8"></head><body>${body}</body></html>`,
    { headers: { "content-type": "text/html;charset=UTF-8" } }
  );
}

url.pathname 就是网址里 / 后面的部分。/ 是首页,/about 是关于页,依此类推。

第三步:文章放哪儿

博客的核心是文章。我选择把每篇 markdown 文件放在图床(专门存文件的地方),数据库里只记「这篇文章的文件路径叫什么」。

这样文章正文和网站代码是分开的——改文章不用动代码,改代码也不怕碰坏文章。

小提示:如果你只是本地练手,也可以先把文章正文直接放进 KV 里(下面会讲 KV 是什么),这样不依赖图床也能跑通整条链路。

第四步:用 KV 存评论(这一节是重点)

评论这种数据有个特点:量不大、读写不频繁、丢了也不至于天塌下来。这种「小数据」特别适合放在 KV 里。

KV 可以理解成一个超级简单的「键值对仓库」:给一个名字(key),存一段内容(value)。比如:

// 读出某篇文章下的所有评论
const raw = await env.COMMENTS.get(`comments:${postId}`);
const list = raw ? JSON.parse(raw) : [];

// 有人评论了,追加进去再存回去
list.push({ name: "小明", text: "写得好真实", at: Date.now() });
await env.COMMENTS.put(`comments:${postId}`, JSON.stringify(list));

就这么简单。不用建表、不用连数据库、不用写 SQL。

除了评论,KV 还挺适合放这些:

  • 站点配置(标题、简介、社交链接)
  • 文章浏览量计数
  • 友情链接列表
  • 一些「几乎不改,但每个页面都要读」的小东西

但 KV 不是数据库。 它没「查询」「排序」「联表」这些能力,每次都是「整存整取」一个字符串。所以它适合评论、配置这种小数据;真要搞复杂的后台,还是得上 D1 或者别的数据库。

一句话记住:KV 存「小并且不常变」的东西,评论刚好符合。

第五步:部署上线

wrangler deploy

完事。你的博客现在跑在全球的 Cloudflare 节点上。

一点真心话

Workers + KV 这套组合,最适合「小而美」的个人项目。它逼着你把东西做简单——而这种简单,恰恰是个人博客最舒服的状态。

别被「边缘计算」「Serverless」这些词吓到。说白了就是:写好一段处理请求的代码,剩下的运维交给平台。剩下的时间,拿去写你想写的文章就好。