首页/开发/CI/CD 与发布速查/缓存键设计(Cache Key)
流水线设计54 条

缓存键设计(Cache Key)

缓存键决定命中率与正确性:按依赖锁文件哈希生成键,依赖变更自动失效,避免用错缓存。

CI/CD 与发布速查开发更新于 2026-10-12
GitLabcache:key:files 用文件内容生成键(上限 2 个文件)
GitHubactions/cache 的 key 常配 hashFiles('**/package-lock.json')
分层键restore-keys 提供前缀回退,允许部分命中

GitHub

GitHub
- uses: actions/cache@v4
  with:
    path: ~/.npm
    key: npm-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      npm-${{ runner.os }}-

GitLab

GitLab
cache:
  key:
    files: [package-lock.json]
键过于笼统(如固定 v1)会命中过期依赖;键过于具体(含提交号)则几乎无法复用。

易错点

  • hashFiles 找不到匹配文件时返回空串:键退化为固定值导致错误复用,注意通配路径
  • 多个缓存路径共用一个过宽键:内容不一致的数据被同一缓存带进来

数据来源与参考

  • GitLab Docs《Cache key》
  • GitHub Docs《Caching dependencies》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌