Composer怎么清理所有缓存 Composer怎么删除冗余缓存数据【清理】

5次阅读

Composer怎么清理所有缓存 Composer怎么删除冗余缓存数据【清理】

composer clear-cache 会清掉哪些东西

它只清理 composer 自己的本地缓存目录(通常是 ~/.composer/cache),包括:已下载的 zip 包、解压后的 dist 包、composer.lock 衍生的元数据缓存、远程包信息(如 packagist.org 的 json 响应快照)。不会碰你的项目目录、vendorcomposer.json 或系统级配置。

为什么 composer clear-cache 有时没效果

常见原因有三个:

  • 你改了 composer.json 但没删 vendorcomposer.lock,Composer 仍按旧锁文件复用缓存包 —— 此时清缓存根本没用,得先 rm -rf vendor composer.lockcomposer install
  • 用了镜像源(比如阿里云、腾讯云),镜像本身有 CDN 缓存或代理层缓存,clear-cache 只清本地,不刷新镜像服务器上的响应
  • 某些插件(如 hirak/prestissimo)会绕过默认下载逻辑,它们的临时文件不在标准缓存路径里,clear-cache 不覆盖

删冗余缓存:手动清理更准,但得认路

Composer 缓存目录结构是分层的:cache/files/ 存 zip 包,cache/repo/ 存元数据,cache/vcs/git clone 的裸仓库。真正“冗余”的往往是:

  • cache/files/ 下大量老版本 zip(比如 monolog/monolog/1.25.0.zip1.26.1.zip 都留着)—— 可用 find ~/.composer/cache/files -name "*.zip" -mtime +90 -delete 清 90 天前的
  • cache/vcs/ 里残留的已废弃包 git 目录(尤其当你频繁切分支或换源时)—— 直接 rm -rf ~/.composer/cache/vcs/* 安全,下次需要时自动重建
  • 注意:别动 cache/repo/ 下的 packagist.org/,那是核心索引,删了首次 composer update 会明显变慢

CI/CD 或 docker 构建中该不该清缓存

不该无脑清。CI 环境通常挂载缓存卷(如 github Actions 的 actions/cache),目标是复用 ~/.composer/cache 加速安装。这时候执行 composer clear-cache 反而让每次构建都重新下载,拖慢流水线。

真要“清理冗余”,推荐做法是:

  • 在 CI 脚本开头加 composer config -g cache-dir /tmp/composer-cache,把缓存指向临时路径,自然随容器销毁
  • 或者用 composer install --no-cache,跳过缓存写入(但不读也不写,适合极简构建)
  • 如果发现某次构建因缓存损坏失败(比如报 file could not be downloaded: failed to open stream),再针对性 rm -rf ~/.composer/cache 并重试

缓存不是垃圾,是 Composer 的性能杠杆;乱清不如看清它在哪、被谁用、坏了怎么换。

text=ZqhQzanResources