这个站是怎么做的

这个网站的构成、运行成本,以及为什么它里面没有任何一个数据库。

这是站上的第一篇东西,那就先交代这个站本身。

它是什么

你正在读的每一个页面,都是在构建时生成一次,然后作为普通文件复制到 Cloudflare 的边缘节点上的。没有服务器为你渲染响应,没有数据库被查询,没有会话,也没有任何需要登录的东西。对这里的一次页面请求,就是对一个文件的请求——和其他所有人拿到的是同一个。

这是刻意加上的约束,而不是我勉强接受的局限。个人网站是少数几种可以做到「活得比它的维护更久」的东西:没有必须按期打补丁的依赖,没有会宕掉的源站,没有每月悄悄涨上去的账单。最省心的系统,是那个根本没在运行的系统。

组成部分

  • Astro 把 Markdown 文件和几个组件变成静态 HTML。除非某个页面主动要求,否则它不向浏览器发送任何 JavaScript。目前还没有页面提出这个要求。
  • Cloudflare Workers 静态资源 负责分发构建产物。TLS、HTTP/3 和证书续期是别人的问题,而这正是它们该待的地方。
  • 不用网络字体。 排版用的是你设备上已有的那些好字体。没有东西要下载,所以也就没有闪烁、重排和加载失败。
  • Cloudflare Web Analytics 统计页面访问。它不用 cookie,也不存储任何能识别你的信息。我大概每月看一次,主要是想知道哪些文章真的被读完了。

怎么发布

写一篇文章就是加一个 Markdown 文件然后推上去。加一个产品就是往一个 TypeScript 数组里加一条记录。这两件事我在手机上也能做,而且都不需要一个我还得费心去保证安全的后台面板。

每一篇都可以有中文版、英文版,或者两个都有。角落里的那个切换按钮在它们之间跳转;如果对应的翻译还不存在,它会直接说明,而不是假装有。

它不做什么

没有评论——如果你想就这里的某个观点和我争论,我的邮箱在每一页的底部,而写一封邮件所需的那点力气,恰好足以让它值得一读。没有邮件订阅弹窗,没有 cookie 横幅,没有推荐算法。如果某篇文章值得你再来一次,订阅源就在那里。

我估计以后这些大部分都会变。那也没关系:它只是几百行我自己写的代码,加上一个装 Markdown 的目录——对于一个人的观点来说,这个机械量差不多刚刚好。

← 返回文章列表