# 依赖项缓存

了解用于提升工作流速度和效率的依赖项缓存功能。

## 关于工作流依赖项缓存

工作流程运行通常在不同运行之间重新使用相同的输出或下载的依赖项。 例如，Maven、Gradle、npm 和 Yarn 等软件包和依赖项管理工具都会对下载的依赖项保留本地缓存。

为了帮助加快重新创建文件（如依赖项）所需的时间， GitHub 可以缓存经常在工作流中使用的文件。

## 构件与依赖项缓存

制品和缓存相似，因为它们都可以将文件存储在 GitHub 上，但两者的适用场景不同，不能相互替代。

* 如果您希望在多次工作流运行之间重复使用那些不经常变化的文件，例如包管理系统下载的依赖项、中间构建输出，或其他重新生成成本高昂的文件，请使用缓存。 缓存这些文件可以加快工作流运行的速度，但如果缓存不可用，作业应始终能够重新下载或重新生成这些文件。
* 如果要保存作业生成的文件，以在工作流运行结束后使用或查看文件（例如生成的二进制文件或生成日志），或者想要在工作流中的作业之间传递文件时，请使用项目。

有关工作流运行工件的详细信息，请参阅“[使用工作流工件存储和共享数据](/zh/enterprise-server@3.22/actions/tutorials/store-and-share-data)”。

## 缓存安全性

缓存是根据工作流运行所使用的分支或标签来共享的，而不是根据工作流或作业的标识来共享。 请参阅 [触发工作流的事件](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/events-that-trigger-workflows) 和 `GITHUB_REF`，以了解用于各种工作流触发器的分支。 任何可以读取缓存的运行都将还原其内容 as-is，因此应将还原的文件视为不受信任的输入，并且永远不会将机密或其他敏感数据存储在缓存中。

不受信任的工作流可能会读取敏感的缓存内容，例如当来自复刻的 `pull_request` 恢复缓存时。 被投毒的缓存可能导致在受信任的工作流中执行代码。 为了限制缓存中毒的风险， GitHub 为响应低信任触发器的工作流提供默认分支范围内缓存的只读访问权限。

有关安全使用缓存的缓存范围、访问限制和最佳做法的详细信息，请参阅 [依赖项缓存参考](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/dependency-caching#cache-access-for-low-trust-workflow-triggers)。

## 后续步骤

若要在工作流中实现依赖项缓存，请参阅 [依赖项缓存参考](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/dependency-caching)。