composer install 慢主因是缓存未生效:vendor 重建、.composer/cache/files/ 为空、ci 缓存键错误;需正确配置阿里云镜像、扩大缓存上限、设 ttl、精准 cache key 并同步缓存 vendor 和 .composer/cache。

composer install 为什么慢?缓存没用对是主因
不是网络差,也不是服务器卡,绝大多数情况下 composer install 慢,是因为缓存根本没生效——vendor 目录每次重建、.composer/cache/files/ 里空空如也、CI 流水线里连缓存键都写错了。Composer 的缓存机制分三层:包文件缓存(dist zip)、VCS 仓库缓存(git clone)、元数据缓存(包列表),但只有前两者对安装速度有直接作用。
- 本地开发时,
~/.composer/cache/files/默认存在且有效,但如果你删过~/.composer或重装过系统,它就没了 - CI/CD 中不显式声明
cache: paths:,那 vendor 和 Composer 自身缓存压根不会跨 job 保留 - 用了
composer update却指望缓存加速?别想了——它会清空旧缓存并重新解析整棵树,跟首次安装一样耗时
怎么配全局镜像和缓存参数才真正提速
换源不是“试试看”,而是必须做的第一步;缓存不是“开了就行”,得看它存了啥、存多久、能不能复用。阿里云镜像是目前最稳的全量同步源,腾讯云偶尔滞后几小时,packagist.phpcomposer.com 已停更,别再用。
- 执行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/切源 - 立刻运行
composer clear-cache,否则旧缓存仍可能 fallback 到海外源 - 检查是否生效:
composer config -g repo.packagist应输出含"url": "https://mirrors.aliyun.com/composer/"的 JSON - 调大文件缓存上限(默认 300MB 常不够):
composer config -g cache-files-maxsize 1024M - 设缓存有效期为 6 个月(避免频繁失效):
composer config -g cache-files-ttl 15552000
CI/CD 中 vendor 缓存为啥总失效?关键在 cache key
GitLab CI 里写个 cache: paths: - vendor/ 就完事?不行。缓存键(key)错一点,缓存就永远不命中——比如用 ${CI_COMMIT_REF_SLUG} 是对的,但用 ${CI_COMMIT_TAG} 在非 tag 流水线里会 fallback 到默认键,导致每次都是新缓存。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 推荐用分支名 + lock 文件哈希组合做 key:
key: ${CI_COMMIT_REF_SLUG}-${CI_PIPELINE_ID}或更精准的key: ${CI_COMMIT_REF_SLUG}-$(sha256sum composer.lock | cut -d' ' -f1) - 必须同时缓存
vendor/和.composer/cache/,只缓 vendor 不缓 Composer 自身缓存,下次 install 还得重新下载 zip 包 - 不要在
before_script里跑composer self-update——它会改.composer/下的二进制和配置,让缓存失效 - 如果项目有私有包或自定义 repo,确保
composer auth配置已注入 CI 变量,否则缓存虽在,install 却卡在认证环节
并发下载真有用吗?要看版本和场景
Composer 2.2+ 才原生支持 --concurrency,1.x 完全无视该参数。这不是“插件”,是内置能力,但只对 install 有效,update 仍需串行解析依赖图。
- 确认版本:
composer --version输出至少是2.2.0起 - 合理值是 CPU 核心数 × 1.5,上限建议 8~12,太高反而触发
file_put_contents(/tmp/): failed to open stream - 搭配使用:
composer install --no-dev --prefer-dist --no-progress --concurrency=8 - 注意副作用:并发高时磁盘 I/O 爆满,尤其 macOS APFS 或 Windows 开着实时杀毒软件,解压几百个小文件会卡住——CI 环境可临时关 sync:
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
缓存不是开个开关就自动变快,它依赖镜像、路径、键、权限、版本四者严丝合缝。最容易被忽略的是:CI 中缓存 vendor 却没缓存 .composer/cache/,或者本地换了镜像但忘了 clear-cache,结果还在用半年前的海外元数据硬扛。这些点漏一个,提速就归零。










