01
Go 模板缓存与热加载:开发效率和生产性能怎么兼得
Go 模板不必在开发热加载和生产缓存之间二选一。本文用 html/template、embed.FS 与 os.DirFS 拆出统一 Renderer,并按页面隔离模板树,让开发刷新即见、生产稳定缓存。
分类
把想法变成可运行系统的一切:Go、SQLite、服务端渲染、部署与权衡。
Go 模板不必在开发热加载和生产缓存之间二选一。本文用 html/template、embed.FS 与 os.DirFS 拆出统一 Renderer,并按页面隔离模板树,让开发刷新即见、生产稳定缓存。
SQLite 迁移不该散落在启动逻辑里。本文用 schema_migrations 版本表、BEGIN IMMEDIATE、迁移列表校验、事务包裹和分阶段回滚,给出适合 Go 单体应用的实现。
内容站的旧页面问题不能只靠 TTL。本文用 public_version、缓存键、ETag 与可观察响应头,把缓存失效变成发布后可以验证的工程流程。
SQLite 可以承担内容站和小型系统里的轻量后台任务。本文用一张 jobs 表讲清原子领取、租约校验、重试、死信、锁回收与 worker 数量的取舍。
SQLite 不是简单复制一个文件就算完成备份。本文区分 .backup、VACUUM INTO 与停机文件复制的边界,给出 WAL 模式下可落地的热备份与恢复流程。
不需要 Node、不需要数据库服务、不需要复杂构建链。一个静态二进制加一个数据库文件,就能跑起一个完整、可被搜索引擎完全收录的内容站。
它能扛住每天数十万次读取,也能在一台 5 美元的机器上服务一个中型站点。我们聊聊它适合什么,又在哪里会先碰到天花板。