正确配置缓存路径和键值可显著提升PHP项目构建速度。需指定~/.composer/cache为缓存路径,使用${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}作为键以确保依赖变化时缓存失效,并在composer install前恢复缓存并设置COMPOSER_CACHE_DIR环境变量,合理设置restore-keys可提高命中率,保证工作流执行顺序正确后缓存将稳定生效。

在GitHub Actions中缓存Composer依赖能显著加快PHP项目构建速度,避免每次重复下载依赖。关键是正确配置缓存路径和键值,确保命中率高且不引发安装问题。
设置正确的缓存路径
Composer默认将依赖包缓存在~/.composer/cache目录下。在CI环境中需明确指定该路径进行缓存保存与恢复。
- Linux运行器使用
~/.composer/cache - 确保缓存动作前后路径一致,避免因路径错误导致缓存失效
基于composer.lock生成缓存键
缓存键应反映依赖文件内容变化,使用composer.lock的哈希值作为键的一部分可保证lock文件更新时自动失效旧缓存。
- 利用
actions/cache的key字段包含${{ hashFiles('composer.lock') }} - 基础键可设为
composer-cache-${{ runner.os }}-${{ hashFiles('composer.lock') }} - 加入操作系统变量防止跨平台污染
合理安排工作流步骤顺序
确保缓存恢复在执行composer install之前完成,并正确设置环境变量提升命中率。
- 先运行缓存恢复动作
- 设置
COMPOSER_CACHE_DIR指向缓存目录(可选,但推荐) - 运行
composer install --prefer-dist --no-progress --no-scripts以适应CI环境
示例工作流片段
- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: ~/.composer/cache
key: ${{ runner.os }}-composer-${{ hashFiles('composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
该配置优先匹配精确键,若无则尝试还原最近一次缓存,平衡效率与灵活性。
基本上就这些,只要路径、键值和执行顺序正确,Composer依赖缓存就能稳定生效。










