人们偶尔会联系我,询问我使用什么软件来运行这个站点。有很多复杂的动态选项(比如 WordPress)和很多复杂的静态选项(比如 Jekyll),但我的需求——可能也是你的! ——很简单。这个网站依赖于非常无聊的技术:多年来它是一个小的 Python 脚本,当 Python 2 到 3 的升级让我大吃一惊时,我在一个晚上用 Go 重写了它。
编码。代码在 GitHub 上,但并不有趣,这就是重点。输入是一些Go 模板——当它是 Python 时我使用 jinja2——和一个 markdown 文件树。输出是 HTML 文件(与 markdown 一对一)和一个 feed 。
静态服务。我看到很多做网站的人担心服务性能。在实践中,为您发布的任何内容提供静态文件将具有很大的扩展性。我在NearlyFreeSpeech上托管这个网站,我与它没有任何关系,但我很满意。它似乎是由一个脾气暴躁的 Unix 系统管理员运行的,这正是我的感觉。我使用 rsync 发布。您按使用量(存储和带宽)付费,而对于我的使用,该网站每月的费用约为 50 美分。这实际上是多付的,因为我懒得删除十年前的访问日志。 (现在我正在寻找,我注意到在我发布热门帖子的几个月中,我被收取了大约 1.50 美元的费用。)
静态生成。我也看到人们抱怨静态网站生成软件的性能,但根据我的经验,生成静态文件也是微不足道和快速的。上面的程序在每次运行时都会遍历输入路径以收集所有降价文件以重新生成所有输出文件,而对于这个博客来说,它会在 40 毫秒内完成。也许如果我有更多的帖子,它会更慢?但即使我有 25 倍的帖子,它仍然只有一秒钟。
生成博客。生成器软件的博客特定部分可能是代码重量的一半,因为博客有一些自定义逻辑来生成一些不同的视图,比如帖子存档。这通过加载所有博客文章然后从这些文章生成所有视图来工作。每个博客文章输入文件都以一些元数据开头,包括影响输出路径的日期戳。我觉得即使是这个描述也是多余的。总逻辑是 200 行 Go,它本身甚至不是一门特别简洁的语言。
(顺便说一句,博客软件传统上将最近的帖子集合转储在一个页面中。请参阅我的旧帖子,了解为什么这个想法已过时。)
编辑工具。我曾经在本地文本编辑器中起草帖子,但最近我开始在 Google Docs 中起草。这让我偶尔会请朋友评论一篇文章。我不经常这样做,但特别是有时我试图解释别人所说的话,我担心引用错误。完成后,我将其复制到具有内置 Markdown 预览的 VSCode 中。 prettier -w --prose-wrap always
是 Markdown 自动格式化程序,如果您像我一样对自动格式化有强迫症,这很有用。
低维护。 Python2 版本的代码在 10 多年的时间里基本没有修改过;我希望 Go 版本, Go 强调稳定性,也能持续很长时间。最大的风险可能是对 Markdown 解析器的单一外部依赖。我的方法最大的缺点是,发布一篇关于它可能如何与 web 应用程序一起工作的新帖子并不是特别方便,但即使是这个障碍也只有在我想要发布它时创建一个文本文件并运行一个脚本那么复杂.相比之下,零维护(Wordpress 今年已经有 5 个以上的 CVE)的好处是相当大的。
这很简单。总而言之,这个堆栈速度很快,完全符合我的要求,并且就我的时间而言风险很低。我想发布以上内容以鼓励您也尝试一下。
原文: https://neugierig.org/software/blog/2022/10/blog-software.html