composer install未走缓存主因是未加--prefer-dist,导致默认拉source而非dist包;只有files/目录下的zip包才被复用,且需配合--no-network实现离线安装。

Composer 默认就会用本地缓存,但很多人装完包还是慢,不是缓存没起作用,而是缓存没被命中——要么路径不对,要么命令没对上,要么缓存本身已损坏。
composer install 为什么没走缓存?
最常见原因是没加 --prefer-dist。Composer 默认在有 source(Git 仓库)信息时倾向克隆源码,而源码不进 files/ 缓存目录,只进 vcs/(且不复用)。dist 包(ZIP/TAR)才真正走主缓存路径。
- 运行
composer install --prefer-dist强制走 ZIP 包路径,缓存才生效 - 检查
composer.lock里目标包的dist字段是否存在;若只有source,说明上次是update时拉的源码,缓存不会被复用 -
composer install不带参数时,会按lock文件记录的方式还原——如果 lock 里记的是 source,它就不会去缓存找 ZIP
如何确认缓存路径和实际体积?
别猜默认路径,COMPOSER_CACHE_DIR 环境变量或公司镜像配置可能已改写它。缓存太小(1.5 GiB 且半年未更新)都值得干预。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查真实路径:
composer config --global cache-dir - 看缓存体积(Linux/macOS):
du -sh $(composer config --global cache-dir) - Windows 用户注意:
%APPDATA%\Composer\Cache\Files是默认路径,但若设过环境变量,以echo %COMPOSER_CACHE_DIR%为准 - 缓存目录下
files/存 ZIP,repo/存元数据,vcs/存 Git 克隆副本——只有files/里的 ZIP 能被--prefer-dist直接复用
离线环境怎么让 install 强制读缓存?
关键不是“怎么缓存”,而是“怎么让 install 完全跳过网络”。靠 --no-network + --prefer-dist 组合,才能确保 Composer 连 DNS 都不碰,只在校验通过后解压 ZIP。
- 联网机先跑:
composer install --prefer-dist --no-scripts --no-plugins,确保所有 ZIP 落进~/.composer/cache/files/ - 把整个
files/目录复制到离线机(如/opt/composer-cache),再执行:composer config --global cache-dir /opt/composer-cache - 离线机上必须用:
composer install --no-network --prefer-dist—— 缺一不可。漏掉--no-network,它仍会尝试连 Packagist 拉元数据;漏掉--prefer-dist,它可能 fallback 到 source 并报错 - 校验失败?说明缓存中 ZIP 的
sha256和composer.lock里记录的不一致,删掉对应 ZIP 即可,不用清整个缓存
缓存损坏时只删 ZIP,别碰 repo/ 和 vcs/
看到 Failed to extract 或 zlib_decode() error,基本就是某个 ZIP 下载中断或写坏。全量 composer clear-cache 反而延长恢复时间,因为要重下所有包的元数据。
- 从
composer install -v日志末尾找报错包名,比如symfony/console - 进
$(composer config --global cache-dir)/files/,用ls -l *symfony*console*.zip(Linux/macOS)或 PowerShell 的Get-ChildItem -Filter "*console*.zip"(Windows)定位 - 仅删除匹配的 ZIP 文件,保留
repo/https---packagist.org/和vcs/不动 - 删 ZIP 后必须同步删
vendor/和composer.lock,否则下次 install 仍会校验失败
缓存机制本身很稳,出问题几乎都卡在「命令没对上」或「路径没对齐」。真正需要人工干预的,只是那几个 ZIP 文件和那一行 --prefer-dist。其他时候,让它自己跑就行。










