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 模式下可落地的热备份与恢复流程。
用 JSON-LD 把文章语义喂给搜索引擎,手把手实现 Article、BreadcrumbList 与 WebSite 三层结构化数据,附 Go 模板代码与验证工具。
不需要 Node、不需要数据库服务、不需要复杂构建链。一个静态二进制加一个数据库文件,就能跑起一个完整、可被搜索引擎完全收录的内容站。
搜索引擎确实能执行 JavaScript,但「第一时间拿到完整 HTML」,永远比「等脚本跑完」更可靠。