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

composer install 还慢?缓存根本没被用上
绝大多数项目重构时 composer install 慢,不是因为网络差或服务器弱,而是本地缓存压根没生效——vendor/ 被删了、~/.composer/cache/files/ 是空的、CI 流水线里 cache: paths: 漏配 vendor 和缓存目录。Composer 的缓存只对 install 有效,update 会清掉旧缓存重来,别指望它加速重构。
- 检查缓存是否真在用:
ls -l ~/.composer/cache/files/,空目录说明缓存失效 - 本地开发删过
~/.composer或重装系统?缓存目录就丢了,得重建 - CI 中只缓存
vendor/却不缓存~/.composer/cache/,每次 job 都从零下载 -
composer install --no-cache是临时绕过缓存,不是长期解法;真要提速,得让缓存“稳住”
镜像源配置错一个字符,就等于没换
阿里云镜像是目前最稳的全量同步源,但 composer config -g repo.packagist 命令写错任意一处,都会静默 fallback 到 packagist.org,你完全感知不到——composer install 还是卡在 Downloading,composer diagnose 却显示 “Repo packagist.org is default”。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须带
-g,否则只改当前目录,对create-project或全局命令无效 - key 是
repo.packagist,不是repos.packagist(多一个 s 就失效) - type 必须显式写
composer:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须以
/结尾,少斜杠会导致 404 或空响应,部分 Composer 2.2+ 版本直接回退 - 验证是否生效:
composer config -g repo.packagist输出应为{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
CI/CD 中缓存 vendor 和 .composer/cache 必须同时做
只缓存 vendor/ 目录,不缓存 ~/.composer/cache/,相当于只存了“结果”却丢了“原材料”——下次 install 仍要重新下载 zip 包;反之只缓存 cache 而不缓存 vendor,则每次都要解压重建,白费缓存。
- GitHub Actions 示例:
cache: paths: [vendor/, ~/.composer/cache/](注意路径格式) - GitLab CI:用
cache: key: $CI_COMMIT_REF_SLUG并明确列出两个路径 - 宝塔或 Jenkins 环境中,确认执行命令的用户是
www或jenkins,不是你登录 shell 的用户——composer config -g要用对应用户身份运行 - 缓存键(cache key)必须精准:建议用
composer.lock的 hash,而非固定字符串,避免 lock 更新后缓存误用
重构时删 vendor 和 lock 文件,别跳过 --prefer-dist
项目重构常需彻底重装依赖,此时删掉 vendor/ 和 composer.lock 是对的,但如果不加 --prefer-dist,Composer 默认可能 fallback 到 --prefer-source(尤其当某些包没 dist 发布时),导致反复 clone Git 仓库,速度暴跌。
-
composer install --prefer-dist --no-dev --optimize-autoloader是重构后上线前的标准组合 -
--prefer-dist强制走 zip 包,比 git clone 快得多,且能命中缓存 -
--no-dev跳过 require-dev 里的工具链,减少解析和下载量 - 如果
composer.lock已存在但 hash 不匹配(比如换了镜像源),直接删 lock 再装比强行 fix 更可靠
cache-dir 指向 SSD 路径(如 composer config cache-dir /mnt/ssd/composer-cache)比默认放在家目录下快不少,这点在大型 Laravel 项目里特别明显。










