composer clear-cache不是下载加速器,仅在缓存损坏或元数据残留时有效;它清除全局缓存目录下files/、repo/、vcs/子目录,不删vendor/、composer.lock等项目文件,多数“等半天”问题与其无关。

composer clear-cache 不是下载加速器,它只在缓存损坏或元数据残留时才真正起作用;多数“等半天”问题跟缓存无关,清了也白清。
clear-cache 到底删了哪些路径
它只操作 Composer 全局缓存目录下的子目录,路径由 composer config --global cache-dir 决定(Linux/macOS 默认 ~/.composer/cache,Windows 默认 %APPDATA%\Composer\Cache):
-
files/:所有已下载的.zip、.tar包 -
repo/:远程源的元数据快照(如packagist.org/packages.json) -
vcs/:Git 克隆的裸仓库(用于从 Git 安装包时复用)
它不会碰:vendor/、composer.lock、composer.json、PHP OPcache、CI 中挂载的共享缓存卷、镜像 CDN 缓存、插件(如 hirak/prestissimo)的临时文件。
什么时候 clear-cache 真的有用
只有这些情况才值得优先试它:
- 报错含
corrupted .zip file、checksum mismatch、invalid package archive - 刚切换 Packagist 镜像(比如从官方切到阿里云),但
composer require仍走旧地址或提示 “Package not found” - 升级 PHP 版本后,
composer install报Invalid signature - 手动中断过安装,后续
Failed to extract xxx: unable to decompress archive反复出现 - 私有包改了 tag 但没推新 commit,本地一直用缓存里的旧解压结果
执行时加 -v 参数能看清删了哪些具体路径:composer clear-cache -v。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
为什么 clear-cache 后还是装不到新版
这不是命令失效,而是你没动对地方:
-
composer.lock存在 →composer install必然还原旧依赖树,和缓存无关 - 镜像源有 CDN 缓存(如阿里云、腾讯云)→
clear-cache只清本地,不刷新镜像服务器上的packages.json - 元数据 TTL 未过期(通常 24 小时)→ 即使清了
repo/,首次update仍可能拉到旧快照 - 私有包认证失效(如
github-oauth.github.comtoken 过期)→ 清缓存不会帮你重登录
想强制升版,得先删 composer.lock,再跑 composer update 或 composer install --no-cache(注意:--no-cache 是跳过本次读写,不是清缓存)。
CI/CD 和脚本中怎么安全用 clear-cache
在 GitHub Actions、GitLab CI 等非交互环境里,直接写 composer clear-cache 会卡住:
- 必须加
--no-interaction:composer clear-cache --no-interaction - CI 中更稳妥的做法是分步:
composer clear-cache --no-interaction→rm -rf vendor→composer install --no-interaction --prefer-dist - 如果用了
COMPOSER_CACHE_DIR自定义路径,CI 步骤里也得设好该环境变量,否则清的是空目录 - Windows 下脚本需用
del /q vendor\composer\archives\*,且注意默认走 cmd 而非 PowerShell
真正容易被忽略的是:某些团队把缓存挂到 NFS 或自建镜像目录,clear-cache 默认只清 composer config --global cache-dir 指向的那个路径,不会遍历所有可能位置。










