做个人官网之前,先问自己一个问题:它需要后端吗?
对绝大多数官网来说,答案是不需要。它要做的只是把一段固定的内容(介绍、项目列表、文章)交给访客。内容在构建时就确定好了,运行时不需要查询数据库,不需要登录,不需要计算。
一旦确认这一点,架构选择就没什么悬念了。
静态托管买到的是什么
| 维度 | 自己租服务器 | 静态托管 |
|---|---|---|
| 成本 | 每月固定支出 | 免费额度基本够用 |
| 运维 | 系统补丁、证书续期、备份、防攻击 | 零 |
| 可用性 | 机器挂了就挂了 | 多节点冗余 |
| 访问速度 | 取决于机房位置 | 全球 CDN 边缘节点 |
| HTTPS | 自己配 | 自动 |
省下来的运维时间,足够多写几个项目。
代价是什么
静态托管的边界很清楚:不能跑常驻进程。
这意味着下面这些做不了:
- 需要长时间运行的任务(爬虫、定时计算)
- 需要保存状态的服务(数据库、会话)
- 长连接(WebSocket 服务端)
如果官网本身不需要这些,那就没问题。真正需要后端的部分,通常是别的项目,它们完全可以独立部署在另一台机器上,用子域名挂出去。官网只负责展示和引流。
这也是这个站点采用的结构:官网纯静态,项目本身各自独立部署。
内容怎么组织
这个站点的内容分两类:
- 项目数据 —— 一份 JSON 文件,每加一个项目就往数组里加一项
- 文章 —— 一个 Markdown 文件对应一篇,放在 content/posts 目录
两类内容都在构建时被读取,渲染成 HTML,然后输出到 out 目录。运行时不读文件、不查数据库,所以部署上去之后就是一堆 HTML、CSS、JS。
改内容要重新部署吗
要。修改 Markdown 或 JSON 之后需要重新构建。
但这个过程是自动的:推送到 Git 仓库,托管平台检测到变更,自动执行构建命令,几十秒后新版本上线。你不需要手动做任何事。
这也是静态站点最舒服的地方 —— 内容即代码,版本可追溯,回滚就是一次 revert。