composer install 清缓存没用,因其只读不写缓存,依赖 composer.lock 和本地 zip 缓存;清缓存后首次安装变慢,版本锁定或镜像元数据未更新才是装旧版主因;vcs/ 目录才是磁盘与 inode 占用大户,应优先清理。

composer install 为什么清缓存没用
因为 composer install 本身不写缓存,只读;它从 composer.lock 拉包,优先复用 ~/.composer/cache/files/ 里的 zip,但不会往里写新缓存。你执行 composer clear-cache 后再跑 composer install,只是触发重新下载——不是“清理让 install 变快”,而是“清完后第一次 install 变慢”。
常见误判:清完缓存还装旧版 → 不是缓存没清干净,是 composer.lock 锁死了版本,或者镜像源元数据未更新(TTL 通常 24 小时)。
- 真正影响
install速度的是--prefer-dist(走 zip)还是--prefer-source(克隆 git),不是缓存有无 -
install不会自动删旧包、不清理vcs/目录,哪怕你刚切了分支,旧 git 裸仓库还在那儿占几百 MB - CI 环境中无脑加
clear-cache反而拖慢构建——缓存本该复用,不是每次都要重下
哪些缓存该清、哪些不该碰
composer clear-cache 默认清 files/(zip/tar)、repo/(索引快照)、installers/,但跳过 vcs/——而这恰恰是磁盘杀手,单个裸仓库常占 300–800 MB。
- 安全可删:
~/.composer/cache/vcs/*(Linux/macOS)或%APPDATA%\Composer\Cache\vcs\*(Windows),下次需要时自动重建 - 别乱动:
repo/packagist.org/,删了会导致首次composer update卡很久(要重新拉全量包索引) - 慎删:
files/下的 zip 文件——如果你有多个项目共用同一包不同版本,全清可能让后续 install 多下几遍
清完还报 No space left on device?先查 inode
90% 的情况不是磁盘真满,而是 df -i 显示 inode 耗尽。尤其在 ~/.composer/cache/vcs/ 下大量小文件(git 对象)极易吃光 inode。
- 先运行
df -i(Linux/macOS)或Get-PSDrive(Windows),看对应分区 inode 使用率是否 ≥95% - 停掉所有
composer进程,避免缓存目录被锁住(lsof +D $(composer config --global cache-dir)可查) - 确认缓存属主:
ls -ld $(composer config --global cache-dir),若属主是root,用sudo chown -R $USER:$(id -gn) ~/.composer/cache修复 - 手动删
vcs/后再跑composer clear-cache,顺序不能反
长期省空间的配置项
默认缓存无上限,且同时存 zip + dist + metadata。想减少体积,改配置比频繁清更可持续:
- 禁用 zip 缓存(最省空间):
composer config --global cache-files-dir "" - 设缓存最大值(单位 MB):
composer config --global cache-files-max-size "500M" - 关 dist 缓存(影响首次 install 速度):
composer config --global cache-dir-dist false
这些写入 ~/.composer/config.json,下次 install 就生效。但注意:禁用 zip 缓存后,每次都要重下源码包,网络差的环境会明显变慢。
真正卡住的时候,别纠结配置,先 composer clear-cache 和 rm -rf ~/.composer/cache/vcs/* 两步到位——vcs 目录才是静默吃空间的主力,这点最容易被忽略。


















