换国内镜像源(如华为云)可大幅提升Composer下载速度,需正确配置repo.packagist并清理缓存;同时启用parallel-downloads、跳过非必要步骤才能彻底优化。

换镜像源是最快见效的解法
Composer 下载慢,90% 以上不是你网络差,而是默认直连海外 packagist.org——DNS 污染、TLS 握手慢、CDN 路由绕行,导致下载卡在 0–10%,甚至超时。换国内全量镜像源能立竿见影,阿里云、腾讯云、华为云都支持 HTTPS + CDN 加速,实测下载速度可从几 KB/s 提升至 1–5 MB/s。
华为云镜像地址是:https://mirrors.huaweicloud.com/composer/,同步及时、稳定性好,尤其适合使用华为云生态或南方地区用户。
- 全局配置(推荐):运行
composer config -g repo.packagist composer https://mirrors.huaweicloud.com/composer/ - 验证是否生效:运行
composer config -g repo.packagist,输出应为带"type": "composer"的 JSON 对象 - 注意键名是
repo.packagist,不是repos.packagist(后者是旧版写法,会导致配置失败)
为什么换了华为云镜像还卡在 downloading
换源后仍卡住,大概率不是镜像本身问题,而是本地环境干扰了实际请求路径:
- DNS 缓存未刷新:PHP cURL 默认复用 DNS 缓存,可能仍解析到旧 IP;可临时加环境变量
COMPOSER_NO_INTERACTION=1或手动清系统 DNS 缓存 - 公司代理/防火墙拦截了
mirrors.huaweicloud.com域名:用curl -I https://mirrors.huaweicloud.com/composer/直接测试连通性 - 本地
composer.json里误写了其他repositories,且没设"packagist.org": false,导致 Composer fallback 回默认源 - 缓存损坏:执行
composer clear-cache再试,避免旧元数据干扰
parallel-downloads 并发下载必须开
Composer 2.2+ 支持并行下载,但默认关闭,且并发数仅 3。不开它,哪怕镜像再快,也是单线程排队下载,白白浪费带宽。
- 全局启用高并发:运行
composer config -g parallel-downloads 10 - 别设太高:超过 10 容易触发临时文件竞争(报
file_put_contents(/tmp/): failed to open stream),8 是更稳妥的上限 - 这个配置只对
composer install有效;composer update仍需计算依赖图,本质仍是部分串行
CI 构建或部署时跳过非必要步骤
开发阶段需要 autoload 和脚本,但 CI 构建或上线部署时,这些全是冗余开销:
- 跳过自动加载生成:
composer install --no-autoloader,后续用composer dump-autoload --optimize单独处理 - 禁用所有钩子脚本:
composer install --no-scripts,防止意外触发前端构建、缓存清理等重型操作 - 关掉进度条和颜色输出:
composer install --no-ansi --quiet,减少终端 IO 延迟 - 注意:
--no-autoloader后的vendor/autoload.php不可用,必须补一次dump-autoload
最常被忽略的一点:换源只是解决「下载」环节,对私有包(vcs 或 package 类型)、编译扩展(如 ext-swoole)、post-install-cmd 脚本完全无效。真卡住了,先跑 composer install -v 看停在哪一行,别一上来就怀疑镜像。



















