让 composer install 快起来关键就三件事:关掉 Xdebug(慢3–5倍)、换国内镜像源(如阿里云)、跳过开发依赖(--no-dev),可省30–60%时间。

怎么让 composer install 快起来:关键就三件事
Composer 慢,90% 不是它本身有问题,而是没关掉 Xdebug、没换镜像、也没跳过开发依赖。本地装一次多花 2 分钟,CI 流水线里就是几十秒的浪费。
- 关掉
Xdebug:它会让 Composer 变慢 3–5 倍。用php -d zend_extension= composer install临时禁用,或者配个不含 Xdebug 的 CLI PHP 配置 - 切国内镜像源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/。海外服务器可换 Laravel China 镜像,别用默认 packagist.org - 跳过开发依赖:
composer install --no-dev。require-dev里的phpunit、larastan等大包,生产环境根本用不上,省掉 30–60% 时间
--optimize-autoloader 和 --classmap-authoritative 到底该不该一起用?
这两个参数不是“加了就快”,而是有明确分工和使用边界。乱用会导致类找不到、本地开发新增类不生效——尤其在热重载场景下。
-
--optimize-autoloader(或-o):把 PSR-4 映射转成静态类名→路径表,生成vendor/composer/autoload_classmap.php。PHP 7.4+ 下还能进 opcache,必须开 -
--classmap-authoritative(或-a):告诉自动加载器“映射里没有,那就真没有”,彻底跳过文件系统扫描。只适合部署或 CI 构建,开发环境绝对不要加 - 组合命令示例:
composer install --no-dev --prefer-dist --optimize-autoloader --classmap-authoritative,这是线上构建黄金组合
缓存机制怎么真正起作用?别只清 cache 就以为优化了
Composer 缓存分两层:全局下载缓存(zip 包、元数据)和本地 autoload 缓存(APCu / opcache)。很多人只记得 composer clear-cache,却没让缓存“被用上”。
- 确保
cache-dir指向 SSD 或高速磁盘,别挂到 NFS 或 Docker volume 上;配置示例:"cache-dir": "/tmp/composer-cache" - CI 中要显式缓存
~/.composer/cache目录,并用PHP_VERSION或composer.lock的 hash 当 cache key,避免跨版本污染 - 生产环境可启用 APCu 加速自动加载:
composer install --apcu-autoloader,但前提是 PHP 已启用apcu.so扩展且未设置apc.enable_cli=1
为什么 composer install 有时比 update 还慢?
这不是错觉。当 composer.lock 丢失、或 composer.json 被改过但没跑 update,Composer 会退化为“先解析依赖树再安装”,等同于隐式执行 update。这阶段最耗 CPU,且无法靠缓存跳过。
- 永远把
composer.lock提交进 Git,CI 中只跑install,不跑update - 开发时如果改了
require,立刻composer update --lock更新 lock 文件,而不是等部署时才触发全量解析 - 避免在
autoload和autoload-dev中配置重叠路径,否则dump-autoload会生成重复映射,autoload 文件体积翻倍,加载更慢
--classmap-authoritative 的语义边界、--no-dev 的适用时机,以及什么时候该让 Composer 少干点事——而不是让它干得更快。










