换镜像源是提速最直接有效的一步,推荐阿里云源并执行clear-cache;Composer 2.2+支持parallel-downloads并发下载;生产环境必加--prefer-dist和--no-dev;禁用已失效的hirak/prestissimo插件。

换镜像源是提速最直接有效的一步
不换源,其他所有优化都收效甚微。国内直连 packagist.org 常卡在 DNS 解析、TLS 握手或 10 KB/s 级别下载,这不是你网络差,是物理链路和 CDN 覆盖问题。
- 全局生效(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否写入:
composer config -g repo.packagist,输出应含"url": "https://mirrors.aliyun.com/composer/" - 别用已停更的源,如
packagist.phpcomposer.com;腾讯云镜像可备选:https://mirrors.cloud.tencent.com/composer/ - 换源后务必执行
composer clear-cache,否则旧缓存可能仍拉取海外元数据
并发下载要开,但得看 Composer 版本
parallel-downloads 是 Composer 2.2+ 原生支持的并行机制,它能真正让多个包同时下载;但 Composer 1.x 完全不识别这个配置,强行设了也无效。
- 只对
composer install有效,composer update因依赖图计算仍部分串行 - 全局启用:
composer config -g parallel-downloads 10(10 是多数机器合理上限,太高反而触发file_put_contents(/tmp/): failed to open stream) - 若用的是 Composer 1.x(
composer --version显示1.10.22类),别折腾这个参数——先升级:composer self-update
--prefer-dist 和 --no-dev 不是可选项,是生产部署必加项
默认情况下 Composer 可能 fallback 到 --prefer-source(即 clone Git 仓库),尤其当包只有 dev-master 分支时;这会极大增加磁盘 I/O 和网络请求次数。
-
--prefer-dist强制走 ZIP 包,跳过 Git 操作,安装快且 vendor 更干净 -
--no-dev跳过require-dev中所有包(如phpunit、larastan),省掉 30–60% 时间 - CI/CD 中建议组合使用:
composer install --no-dev --prefer-dist --optimize-autoloader --classmap-authoritative - 注意:
--classmap-authoritative会让自动加载器彻底放弃 PSR-4 动态扫描,本地开发慎用,否则新增类直接报错
别再装 hirak/prestissimo 了
这个插件在 Composer 2.x 中已失效,甚至可能引发冲突或静默降级为单线程;它的功能已被 parallel-downloads 和镜像源原生替代。
- 已装的请卸载:
composer global remove hirak/prestissimo - 验证是否还在起作用:
composer diagnose中若仍有hirak/prestissimo提示,说明没清干净全局 vendor - Composer 2.x 下还启用了它,反而可能干扰
parallel-downloads的正常调度 - 真正需要加速的环节,是“从哪下”(镜像)、“怎么下”(并发)、“下什么”(dist vs source),不是靠插件打补丁
最容易被忽略的一点:很多“慢”根本不是 Composer 本身的问题,而是 post-install-cmd 脚本在构建前端资源、生成缓存或跑测试——这些和下载无关,但会卡在 install 最后一步,让人误以为是 Composer 卡住。遇到这种情况,先加 -vvv 看日志停在哪一行,再决定该关脚本还是优化项目逻辑。











