笔记 · 工程化

HMR 不是免费的:开发服务器性能账

热更新被当成理所当然的功能,但它不是免费的。模块越多、依赖图越深,每次保存要重算的东西就越多,最后开发体验会反过来被它拖垮。

先分清是编译慢还是更新慢

编译慢是改完要等,更新慢是页面刷新到稳定要等。两者优化方向完全不同,混在一起看只会白花力气。

依赖图越大越贵

一个被上千个模块引用的公共文件,改动会触发大范围失效。把这类文件拆细,或者把它标记为不参与热更新,收益立竿见影。

缓存要针对开发场景

  • 预构建的依赖别每次启动都重来一遍
  • 保留上一次的编译结果,冷启动只补增量
  • 开发环境的 sourcemap 精度可以适当降级

评论19

访客

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

  • 123

    123@12026-10-31

    @1231923

  • 1231923

    1231923@1231241242026-10-31

    @123213

  • 123

    123@12026-10-31

    @123213

  • 123

    123@12026-10-30

    测试

  • 周迟

    周迟作者@zhouchi2026-09-25

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

  • 孟凡

    孟凡@mengfan2026-09-26

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

  • 邓可

    邓可@dengke2026-09-27

    把流水线耗时先打出来这一步太重要了,不然优化全靠猜。

  • 罗叙

    罗叙@luoxu2026-09-28

    同意,先有数据再谈优化,不然改了半天不知道有没有用。

  • 罗叙

    罗叙@luoxu2026-09-28

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

  • 白露

    白露@bailu2026-09-29

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

  • 江辰

    江辰@jiangchen2026-09-29

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

  • 唐棠

    唐棠@tangtang2026-09-30

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