必须换国内镜像源:执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,严格满足键名repo.packagist、type为composer、url以/结尾三条件,再清缓存、删vendor和composer.lock后重装。

换国内镜像源是必须做的第一步,不换源其他所有优化基本无效。
确认并设置正确的全局镜像源
Composer 2.1+ 要求镜像配置必须满足三个硬条件,缺一不可:键名必须是 repo.packagist(不是 repos.packagist),中间必须带 composer 这个 type 参数,URL 必须以 / 结尾。
- 正确命令:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 执行后必须验证:
composer config -g repo.packagist输出应为完整 JSON 对象,例如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 空、
null或仍含packagist.org,说明没写进去,常见于漏-g、多写s、或 URL 少斜杠 - 项目级
repositories字段会覆盖全局配置;用composer config --list和composer config --list --global对比确认实际生效项
换源后必须清缓存才真正生效
镜像配置改了 ≠ 立刻走新源。Composer 优先读本地缓存里的旧元数据,仍会尝试连 packagist.org 做校验,结果卡在 DNS 解析或 TLS 握手——这就是为什么你看到日志里还在 Downloading packagist.org 的文件。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须立即执行:
composer clear-cache - 想确认是否真删了:
composer clear-cache -v,看输出是否列出实际清理路径 - 如果项目已有
vendor/和composer.lock,建议一并删除后再跑composer install,避免残留引用触发回退查找 - 验证是否真走镜像:
composer show laravel/framework -vvv 2>&1 | grep "Downloading",日志里必须出现mirrors.aliyun.com等镜像域名
调高并发下载但别设过头
http-max-concurrent-downloads 是 Composer 2.2+ 唯一有效的并发控制项,它直接影响 composer install 阶段的 HTTP 请求池大小。但并发再高也救不了 DNS 和 TLS 瓶颈,所以必须和镜像+清缓存一起用。
- 全局设为 8–10 比较稳妥:
composer config -g http-max-concurrent-downloads 10 - 别设超过 12:阿里云/腾讯云镜像易返回
429 Too Many Requests;GitHub 源可能触发403 rate limit exceeded -
parallel-downloads已弃用,设了也不生效,且无任何报错提示 - 这个参数对
composer update几乎无效——依赖图计算本身是串行的
CI/部署阶段要跳过非必要步骤
开发时需要自动加载、脚本钩子、插件,但 CI 构建或上线部署时,这些全是冗余。一个含 200+ 包的 Laravel 项目,加 --no-autoloader --no-scripts --no-plugins 能省掉 35%+ 的 install 时间。
composer install --no-autoloader --no-scripts --no-plugins-
--no-autoloader跳过生成vendor/autoload.php,后续用composer dump-autoload --optimize单独补 -
--no-scripts阻止执行post-install-cmd,避免意外触发前端构建、缓存清理等重型操作 - 注意:这样装出来的
vendor不能直接跑 PHP,必须补一次composer dump-autoload --optimize
最常被忽略的是缓存残留和用户权限问题:宝塔、CI 或计划任务常以 www 用户运行,但 composer config -g 写的是 root 配置(路径为 /root/.composer/config.json),www 根本读不到——得切到对应用户下执行配置命令。










