在GitHub Actions工作流中如何优化composer的执行速度
发布时间 - 2025-09-26 00:00:00 点击率:次启用缓存、使用国内镜像、优化安装参数并提交composer.lock,可显著提升GitHub Actions中Composer的执行速度。
GitHub Actions 中运行 Composer 时速度慢,通常是因为每次都要重新下载依赖、未启用缓存或镜像源较远。通过合理配置缓存和使用国内/快速镜像,可以显著提升执行效率。
启用 Composer 缓存
Composer 安装依赖时会生成大量本地缓存文件,如果每次工作流都重新下载,会浪费大量时间。利用 GitHub Actions 的缓存功能,可将 Composer 的缓存目录(~/.composer/cache)保存下来供后续复用。
示例配置:
- name: Cache Composer dependencies
uses: actions/cache@v4
with:
path: ~/.compos
er/cache
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: |
${{ runner.os }}-composer-
这一步会在命中缓存时跳过大量远程下载,极大缩短 composer install 时间。
使用国内或快速镜像源
默认的 Packagist 源在国外,访问较慢。切换为国内镜像(如阿里云、Laravel China)或公共加速源能有效提升下载速度。
在工作流中添加镜像设置命令:
- name: Set Composer mirror run: composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/
推荐使用阿里云镜像,稳定且速度快。你也可以替换为其他可信镜像源。
合并命令并优化安装参数
减少步骤交互开销,同时使用 Composer 的优化参数,加快自动加载和跳过开发依赖(如非必要)。
例如在生产或测试场景中:
- name: Install dependencies
run: |
composer config autoloader-suffix $(date +%s)
composer install --no-progress --no-scripts --no-dev --prefer-dist --optimize-autoloader
- --no-dev:跳过开发依赖,适合 CI 构建
- --prefer-dist:优先使用压缩包而非 Git 克隆
- --optimize-autoloader:生成更高效的类映射
- --no-scripts:避免执行 post-install 脚本,提升安全性与速度
锁定依赖版本并提交 composer.lock
确保 composer.lock 文件提交到仓库。这样 composer install 会直接按锁文件安装,不再分析最新兼容版本,大幅减少计算时间。
如果没有 lock 文件,Composer 需要重新解析所有依赖关系,耗时显著增加。
基本上就这些。合理使用缓存、镜像和安装参数,Composer 在 GitHub Actions 中的速度可以提升数倍,常见任务从几十秒降到几秒。不复杂但容易忽略。
# laravel
# js
# git
# json
# composer
# github
# 阿里云
# 镜像源
# 镜像
# 跳过
# 国内
# 工作流
# 重新下载
# 是因为
# 都要
# 推荐使用
# 会在
# 下载速度
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
音响网站制作视频教程,隆霸音响官方网站?
原生JS实现图片轮播切换效果
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
Laravel怎么判断请求类型_Laravel Request isMethod用法
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
Laravel如何升级到最新版本?(升级指南和步骤)
如何在建站之星绑定自定义域名?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
Laravel如何实现用户密码重置功能?(完整流程代码)
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
详解Huffman编码算法之Java实现
黑客如何利用漏洞与弱口令入侵网站服务器?
Laravel中的Facade(门面)到底是什么原理
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Python高阶函数应用_函数作为参数说明【指导】
如何在IIS中新建站点并配置端口与IP地址?
,网页ppt怎么弄成自己的ppt?
LinuxCD持续部署教程_自动发布与回滚机制
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
如何快速搭建个人网站并优化SEO?
javascript基本数据类型及类型检测常用方法小结
香港服务器建站指南:免备案优势与SEO优化技巧全解析
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
如何快速建站并高效导出源代码?
百度浏览器如何管理插件 百度浏览器插件管理方法
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
JS去除重复并统计数量的实现方法
JavaScript如何实现继承_有哪些常用方法
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
如何用VPS主机快速搭建个人网站?
用v-html解决Vue.js渲染中html标签不被解析的问题
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
Laravel如何使用.env文件管理环境变量?(最佳实践)
网页设计与网站制作内容,怎样注册网站?
如何用好域名打造高点击率的自主建站?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
python中快速进行多个字符替换的方法小结
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
如何快速搭建高效WAP手机网站吸引移动用户?
Java类加载基本过程详细介绍
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
微信公众帐号开发教程之图文消息全攻略


er/cache
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: |
${{ runner.os }}-composer-