这个站为什么是纯静态的

不是情怀,是一笔安全账:把运行时从服务器上拿掉,攻击面就跟着消失了。顺带说说这套取舍里放弃了什么。

同为工程样例文。这个站自身的架构决策记录在案,正好拿来当第一篇随笔。

朋友问过我:都 2026 年了,个人站为什么不用动态框架,要写成纯静态?

答案不是「静态更快」这种性能话术,而是一笔安全账。

攻击面是跟着运行时来的#

一台服务器上每多跑一个进程,就多一份可以被攻击的东西:Web 应用有依赖供应链问题,评论系统有注入问题,登录系统有凭据泄露问题。这些问题的共同点是——它们都依赖一个常驻的运行时。

纯静态站把这件事从根上解决了:服务器上只有 nginx 和一堆 HTML 文件。没有数据库可以拖,没有会话可以劫持,没有依赖可以被投毒。攻击者能做的最多是篡改静态文件,而文件的完整性可以用哈希清单巡检,恢复就是重新部署一次,分钟级。

动态能力的口子留在哪#

当然有想要动态的时候。这个站的处理原则是:主站无后端,动态能力子域隔离。

  • 搜索:构建期建索引(Pagefind),浏览器端 WASM 检索,服务器不参与;
  • 暗色模式、分享、目录,全是客户端 JS;
  • 将来若真要评论或阅读量,挂到独立子域的独立服务上,主站的 nginx 配置一个字节都不用改。

这样即使动态服务出事,炸的也只是那个子域,博客本身照常活着。

放弃了什么#

诚实起见,也记下代价:

  1. 没有评论(评论区交给公众号和知乎,那边自带);
  2. 没有阅读量(写作者的自尊心受一点影响,可以接受);
  3. 发布要跑一次本地构建(一条命令的事,见 ABOUT 页的说明)。

小结#

个人站的安全需求其实很简单:不宕机、不被挂马、不泄露任何东西。纯静态不是保守,是刚好——用最少的运动部件,满足全部三条。