开了镜像源仍慢的主因是prefer-dist未生效,导致走未缓存的source而非dist包;需检查全局及项目配置,并清理缓存、合理设置parallel-downloads与CI参数组合。

为什么开了镜像源还慢?先确认 prefer-dist 是否真生效
很多人配了阿里云或清华镜像,但 composer install 仍卡在 Cloning into 'xxx' 或反复报 Could not fetch,根本原因不是镜像没切对,而是 prefer-dist 没启用或被覆盖。镜像源主要缓存的是 dist 包(zip/tar),source 基本不缓存——开了镜像却走 source,等于白配。
检查方式:composer config -g prefer-dist 输出 true 才算生效;若输出 false 或空,说明没开。更隐蔽的情况是项目 composer.json 里写了 "prefer-source": true,它会覆盖全局配置,必须手动删掉。
- 私有 GitLab/内网包若没配
dist地址,强制prefer-dist会直接失败,报错类似Could not find a matching version of package xxx - 开发时想改
vendor/里的源码,prefer-dist会让这事变麻烦——它装的是压缩包,没 .git 目录,也没 dev 分支可 checkout -
--prefer-dist对path类型仓库、dev-xxx分支无效,Composer 会自动 fallback 到source
parallel-downloads 设多少才合适?别盲目堆高并发
parallel-downloads 是 Composer 2.2+ 的原生并行下载开关,但默认值只有 3,基本等于没开。设太高反而容易翻车:本地 DNS 解析超时、临时文件竞争、镜像源限流都会触发 file_put_contents(/tmp/): failed to open stream 这类错误。
推荐值:全局设 10(composer config -g parallel-downloads 10)已覆盖多数场景;CI 环境可试 15,但超过 20 很少带来额外收益,反而增加失败率。
- 该配置只对
composer install有效,composer update因依赖图重算逻辑仍部分串行,别指望它也快 3 倍 - 如果机器 CPU 核心数 ≤ 4,设
6更稳妥;macOS 或 Windows 上还要留意防病毒软件实时扫描 vendor 写入,可能让并发优势打折扣 - 执行前先确认版本:
composer --version必须 ≥ 2.2,1.x 版本完全无视这个配置
CI/CD 中哪些参数组合能砍掉 40%+ 时间?
生产部署或 CI 流水线里,composer install 的非必要环节最耗时:生成 autoload 文件、执行 post-install-cmd 脚本、加载 dev 依赖。这些在构建镜像时纯属冗余。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
标准命令应为:composer install --no-dev --prefer-dist --no-autoloader --no-scripts。装完立刻补一句:composer dump-autoload --optimize,既跳过中间步骤,又保证最终可用。
-
--no-dev省掉 PHPUnit、PHPStan 等开发依赖,通常减少 30–60% 下载量和解压时间 -
--no-autoloader跳过生成vendor/autoload.php,后续用dump-autoload --optimize一次性搞定,避免重复扫描 -
--no-scripts阻止意外触发 npm install、redis flushdb 等重型钩子——CI 日志里突然卡住 2 分钟,八成是它干的
镜像源配置后为何还是连国外?cache 清理常被忽略
换源命令执行成功,不代表下次安装就一定走新地址。Composer 会复用旧缓存中的元数据(比如包列表、版本映射),而这些数据可能来自旧源,导致它仍尝试从 packagist.org 拉取 dist URL,再超时 fallback。
换源后必须立即执行:composer clear-cache。否则你看到的 Downloading xxx.zip 可能仍是旧缓存里的海外链接。
- 验证是否真正切到国内源:
composer config -g repo.packagist应输出类似{"url": "https://mirrors.aliyun.com/composer/"} - 已停更的源(如
packagist.phpcomposer.com)务必删除,它们会干扰解析逻辑 - 腾讯云镜像可作备选:
https://mirrors.cloud.tencent.com/composer/,某些地区比阿里云更稳
加速不是堆参数,而是理解每个开关的触发条件和副作用。比如 --classmap-authoritative 能提升运行时性能,但会让本地开发新增类直接报错;--apcu-autoloader 在无 APCu 扩展的环境会静默失效。真正卡住你的,往往不是网络,而是没看清配置之间的咬合关系。

















