文章 · 工程化

CI 缓存预热:把冷启动摊到夜里

流水线最慢的一次永远是第一次。冷启动时缓存全是空的,所有依赖都要重新装、所有产物都要重新编。把这份成本挪到夜里,白天的提交就都是热的。

为什么冷启动特别贵

冷启动不只是慢,它还会让后续步骤都排在一条长队里。一次冷启动能把整条流水线的平均耗时拉高一倍以上。

定时预热

按主分支的最新提交定时跑一次完整构建,把依赖缓存和产物缓存都填满。等白天有人提交时,命中率已经很高了。

预热也要挑时间

放在团队的休息时段跑,既不占白天的并发额度,又能保证缓存的新鲜度。频率不用太高,一天一次通常就够。

评论14

访客

登录后参与评论,你的发言会署上自己的名字。

  • 周迟

    周迟作者@zhouchi2026-09-12

    先占个位:文里的数字都是本地实测的,测试环境写在文末备注里,有疑问直接在这儿回。

  • 罗叙

    罗叙@luoxu2026-09-14

    并行分片我们试过,收益确实明显,但要注意任务之间的隐式依赖。

  • 白露

    白露@bailu2026-09-15

    同感,我们是先画了一遍依赖图才敢拆的。

  • 江辰

    江辰@jiangchen2026-09-15

    缓存那部分能不能再展开讲讲?我们这边命中率一直上不去。

  • 唐棠

    唐棠@tangtang2026-09-16

    产物裁剪这条被低估了,sourcemap 和语言包占的空间比想象中大。

  • 孟凡

    孟凡@mengfan2026-09-17

    构建脚本重写那段看着很有共鸣,最花时间的果然还是新旧产物对照。

  • 段然

    段然@duanran2026-09-18

    缓存只能加速、不能当真相,这句话值得贴在看板上。

  • 于野

    于野@yuye2026-09-19

    我们踩过一次,缓存里的数据比库里旧了两个版本,排查了很久。