做个人官网之前,先问自己一个问题:它需要后端吗?

对绝大多数官网来说,答案是不需要。它要做的只是把一段固定的内容(介绍、项目列表、文章)交给访客。内容在构建时就确定好了,运行时不需要查询数据库,不需要登录,不需要计算。

一旦确认这一点,架构选择就没什么悬念了。

静态托管买到的是什么

维度自己租服务器静态托管
成本每月固定支出免费额度基本够用
运维系统补丁、证书续期、备份、防攻击零
可用性机器挂了就挂了多节点冗余
访问速度取决于机房位置全球 CDN 边缘节点
HTTPS自己配自动

省下来的运维时间,足够多写几个项目。

代价是什么

静态托管的边界很清楚:不能跑常驻进程。

这意味着下面这些做不了:

  • 需要长时间运行的任务(爬虫、定时计算)
  • 需要保存状态的服务(数据库、会话)
  • 长连接(WebSocket 服务端)

如果官网本身不需要这些,那就没问题。真正需要后端的部分,通常是别的项目,它们完全可以独立部署在另一台机器上,用子域名挂出去。官网只负责展示和引流。

这也是这个站点采用的结构:官网纯静态,项目本身各自独立部署。

内容怎么组织

这个站点的内容分两类:

  1. 项目数据 —— 一份 JSON 文件,每加一个项目就往数组里加一项
  2. 文章 —— 一个 Markdown 文件对应一篇,放在 content/posts 目录

两类内容都在构建时被读取,渲染成 HTML,然后输出到 out 目录。运行时不读文件、不查数据库,所以部署上去之后就是一堆 HTML、CSS、JS。

改内容要重新部署吗

要。修改 Markdown 或 JSON 之后需要重新构建。

但这个过程是自动的:推送到 Git 仓库,托管平台检测到变更,自动执行构建命令,几十秒后新版本上线。你不需要手动做任何事。

这也是静态站点最舒服的地方 —— 内容即代码,版本可追溯,回滚就是一次 revert。