Cloudflare Workers 搭建轻量级公告站:零成本部署方案
Cloudflare Workers 搭建轻量级公告站:零成本部署方案
Cloudflare Workers 架构图
最近看到不少朋友在问:有没有什么好的办法能在 Cloudflare Workers 上部署一个类似论坛的静态网站?主要目的是用来发发公告、分享一下动态。
其实,“论坛”这个词听起来挺复杂的,但如果你的需求仅仅是“发布公告 + 简单互动”,那么完全不需要动用那些笨重的 PHP 或数据库方案。利用 Cloudflare 强大的边缘计算能力,我们可以构建出既轻快又免费的站点。
今天就以“公告站”为切入点,聊聊几种可行的技术落地路线,以及具体的配置思路。
为什么选择 Cloudflare Workers/Pages?
在开始之前,先明确一下为什么要用 Workers。传统的论坛部署需要买 VPS、配 Nginx、装 MySQL,这不仅是钱的问题,维护成本也高。
而 Cloudflare 提供的方案有几个天然优势:
- 全球加速:节点遍布全球,访问速度极快。
- 零成本起步:Workers 免费额度对于个人公告站来说绰绰有余。
- 无需运维:不用担心服务器被黑,也不用半夜起来重启服务。
- 支持自定义域名:配合 Cloudflare 的 DNS 解析,配置非常丝滑。
方案一:Cloudflare Pages + 静态生成器(推荐)
虽然你提到了 Workers,但对于“论坛类的静态网站”来说,Cloudflare Pages 其实是比纯 Workers 更优的选择。Pages 本质上就是托管静态 HTML/CSS/JS,但它的底层也是构建在 Workers 之上的,且对 CI/CD 支持极佳。
1. 选个“内容型”静态生成器
既然是公告站,核心是内容管理。如果你不想写后台代码,可以使用现成的静态站点生成器(SSG):
- Hugo:编译速度极快,适合文档和公告类站点,主题丰富。
- Hexo:Node.js 生态,插件多,折腾起来比较顺手。
- Astro:新晋网红,零 JS 默认输出,性能拉满,非常适合这种内容为主的站。
操作流程很简单:你在本地写 Markdown 文件(也就是你的公告帖子),运行构建命令,生成的 public 文件夹直接推送到 GitHub 仓库,然后连接 Cloudflare Pages 即可自动部署。
2. 解决“论坛感”的关键:评论系统
静态页面本身是没法存评论的。要模拟论坛的互动感,我们需要接入第三方的评论组件。这里强烈推荐基于 GitHub Discussions 的方案:
- Giscus:这是一个由 GitHub Discussions 驱动的轻量级评论组件。它完全免费,无需自建数据库,支持 Markdown,样式还紧跟 GitHub 主题,非常极客。
- Utterances:功能类似 Giscus,也是基于 Discussions,界面相对简单一些。
配置方法: 你只需要在你的 GitHub 仓库里开启 Discussions 功能,然后去 Giscus 官网填一下仓库信息,它会给你一段 JS 代码。把这段代码贴到你 SSG 模板的文章页脚处,瞬间你的静态公告页就有了互动讨论的能力,而且所有数据都存在你自己的 GitHub 仓库里,不用担心跑路。
方案二:纯 Cloudflare Workers 方案
如果你非要玩“纯 Workers”,或者你希望动态处理一些逻辑(比如根据请求头返回不同语言),可以用这种方式。
1. Hono 框架上手
写原生的 Workers 代码虽然可行,但处理路由会很麻烦。建议使用 Hono 这个轻量级 Web 框架,它是专门为 Edge 运行时设计的,API 设计非常友好(有点像 Express)。
import { Hono } from 'hono'
const app = new Hono()
// 模拟一个公告列表接口
app.get('/', (c) => c.text('欢迎来到公告站'))
app.get('/api/notices', (c) => {
const notices = [
{ id: 1, title: '系统维护通知', date: '2023-10-01' },
{ id: 2, title: '新功能上线', date: '2023-10-05' }
]
return c.json(notices)
})
export default app
``n```
### 2. 前后端分离思路
使用纯 Workers 时,通常采用前后端分离的模式:
* **后端**:负责提供 JSON 数据(如上面的 /api/notices)。你可以把数据存在 Cloudflare Workers KV(键值存储)里,这样更新公告不需要改代码,只需调用 KV API 写入新数据即可。
* **前端**:可以用 React 或 Vue 写一个简单的 SPA,然后部署到 Cloudflare Pages,甚至直接把 HTML 字符串硬编码在 Worker 返回中(简单粗暴但有效)。
### 3. 使用 Cloudflare D1 数据库(进阶)
如果你觉得 KV 不够用,想要更强大的查询能力,Cloudflare 还提供了 **D1**(基于 SQLite 的边缘数据库)。你可以在 Workers 里直接写 SQL 语句来查询帖子。
不过,对于简单的发布公告场景,D1 有点杀鸡用牛刀,除非你的公告量达到了几千条且需要复杂的搜索功能。
## 方案三:现成的 Serverless 论坛软件
如果你不想从零开始写代码,市面上也有一些适配 Cloudflare Workers 的现成轮子,可以直接拿来用:
* **Discuz! Q (适配版)**:虽然原版需要 PHP,但有些社区大佬做了 Serverless 化的移植版本,可以尝试搜索相关开源项目。
* **Galaxy (或其他基于 Workers 的 CMS)**:GitHub 上有一些开源项目专门针对 Cloudflare Workers 构建博客或轻论坛,搜索“Cloudflare Worker CMS”能找到不少宝藏。
## 总结与建议
综合来看,针对“发布公告”这个需求,我的建议路径是:
1. **新手/追求极简**:直接上 **Cloudflare Pages + Hugo/Hexo**,评论区配 **Giscus**。这是最稳、最快、最容易维护的方案。
2. **极客/喜欢折腾**:使用 **Hono + Workers KV**。你可以自己写个简单的管理后台页面,通过 KV 存储内容,体验纯粹的 Serverless 开发乐趣。
3. **未来扩展**:如果后期内容变多,再考虑引入 **D1 数据库**做迁移。
别被“论坛”两个字束缚住,其实一个漂亮的静态页加上评论区,往往比臃肿的传统论坛体验更好。赶紧去试试吧!

评论已关闭