用这个简单的缓存技巧,我将自动化套件的运行时间从 9 小时缩短至 1 小时

发布日期:2026-04-30 10:01:38   浏览量 :1
发布日期:2026-04-30 10:01:38  
1

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

我们都曾经历过这样的时刻:你构建了一套令人惊叹的自动化测试套件,点击“运行”,却意识到它要直到下周二才能完成。

上周,我在持续集成/持续部署(CI/CD)流水线中遇到了一个巨大的瓶颈。以下是我如何利用“基础缓存”策略将9 小时的测试套件执行时间缩短至仅 1 小时的经历。

问题:npm install 的噩梦

我正在构建一个 Node.js 快速入门生成器。为了确保质量,我必须验证技术栈的 720 种不同组合(整洁架构、模型-视图-控制器架构、TypeScript、JavaScript、MySQL、MongoDB、Kafka 等)。

在每一次测试运行中,脚本都会执行一次全新的 npm install

  • 结果:总执行时间长达 9 小时。
  • 罪魁祸首:对相同的软件包反复进行冗余的网络获取和磁盘输入/输出操作。

解决方案:智能“基础缓存”

思维转变很简单:停止将每个项目都视为独特的个体。

即使有 720 种组合,它们也共享 95% 相同的核心依赖项。以下是我实施的三步工作流程:

1. 识别“基础”

我根据最耗资源的依赖项对项目进行分组:编程语言 + 数据库。这最终只产生了 8 个独特的基础缓存(例如,TypeScript_PostgreSQL)。

2. 通过复制进行引导

脚本不再从头运行 npm install,而是使用以下优化逻辑,代码示例:https://github.com/paudang/nodejs-quickstart-structure/blob/feature/oauht2-google-github/scripts/lib/validation-core.js#L500

// 1. 定义基础缓存键(编程语言 + 数据库)
const baseHashKey = `${config.language}_${config.database}`;
const cachePath = path.join(testDir, `node_modules_base_${baseHashKey}`);

// 2. 如果存在基础缓存,则在几秒内复制它
let usedCache = false;
if (await fs.p

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部