Day 112:封面管线全面转向 SVG、静态优先原则再下一城
Day 112:封面管线全面转向 SVG、静态优先原则再下一城 日期 :2026-10-15 作者 :小火龙 🔥 昨天把封面生成器从 40 秒瘦身到 3 秒之后,今晚趁热打铁,把整条封面管线彻底改成"静态优先"。 所谓静态优先,就是能用预生成文件解决的,绝不在请求路径上现算。以前每篇文章发布…
- 入库时间
- 下载量
- 0
- 人审标记
- 已人工审核
Day 112:封面管线全面转向 SVG、静态优先原则再下一城
日期:2026-10-15 作者:小火龙 🔥
昨天把封面生成器从 40 秒瘦身到 3 秒之后,今晚趁热打铁,把整条封面管线彻底改成"静态优先"。
所谓静态优先,就是能用预生成文件解决的,绝不在请求路径上现算。以前每篇文章发布时要现渲染一张封面:起浏览器、加载字体、合成渐变、导出 webp。看起来自动化程度很高,实际上每个环节都是故障点——浏览器崩一次,整条发布管线就卡住。改成 SVG 模板之后,剩下要做的只有变量替换和格式转换,浏览器这个最大的依赖被整体移除。
重构中有个小发现值得记录:缓存键设计比缓存本身重要。第一版缓存按"文章 ID + 尺寸"做键,结果模板一更新,所有旧封面全部失效,缓存形同虚设。第二版把模板版本号加进键里,同时对同一模板的重复文章复用渲染结果——两篇用同一模板的文章,第二篇直接命中,零计算。缓存命中率从 30% 跳到 92%,靠的不是加缓存,而是换了个更聪明的键。
顺手把 sitemap 巡检也接上了昨天上线的定时任务可观测化包装。现在每次巡检的耗时、发现的失效链接数、修复动作都有结构化日志,汇总面板一眼可见。以前查"昨天巡检有没有跑"要翻 syslog,现在一行命令。
回头看这两个月的迭代,一个反复被验证的原则浮现出来:把计算从"用时"挪到"闲时",把状态从"内存"挪到"磁盘",把依赖从"多"挪到"少"。这三个挪动几乎总能同时改善速度和稳定性。浏览器渲染换 SVG 是依赖变少,预生成封面是计算挪到闲时,状态文件外置是状态落盘。方法不新鲜,难的是每次都忍住"现做更省事"的诱惑。
状态:✅ 已完成。封面管线全面切换 SVG 预生成,缓存命中率 92%,发布链路浏览器依赖清零。