composer clear-cache只清files/、repo/、vcs/三个子目录,但默认跳过vcs/——这是磁盘空间无变化的主因;它不删vendor/、composer.lock等项目文件。

composer clear-cache 到底清了哪些目录
它只动 files/、repo/、vcs/ 三个子目录,但默认跳过 vcs/ —— 这是很多人清完缓存发现磁盘空间没变的主因。
-
files/:存 ZIP/TAR 包,clear-cache会删掉所有(除非加--no-interaction被卡住) -
repo/:存packages.json和provider-*.json快照,clear-cache会清空该目录下所有镜像源对应的内容 -
vcs/:存 Git 裸仓库(每个 300–800 MB + 上万 inodes),clear-cache默认不碰它;必须手动删或提前禁用:composer config --global cache.vcs false
注意:clear-cache 不影响 vendor/、composer.lock 或系统临时目录(如 /tmp),这些得单独处理。
为什么换了镜像源,clear-cache 后还是走 packagist.org
根本不是缓存没清干净,而是配置压根没生效 —— Composer 2.x 对 repo.packagist 字段校验极严,错一处就静默 fallback 到官方源。
- 键名必须是
repo.packagist(单数),写成repos.packagist或repositories都无效 -
type值必须显式为"composer",不能省略,也不能写成"composer-type" -
url必须是 HTTPS 且末尾带/,例如https://mirrors.aliyun.com/composer/✅,少斜杠就是 404 ❌ - 验证方式:运行
composer config -g repo.packagist,输出应为完整 JSON 或纯 URL 字符串;若为空、null或仍是https://packagist.org,说明配置失败
项目级 repositories 字段会彻底屏蔽全局配置 —— 即使只写 {},也会让 Composer 放弃 repo.packagist。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
元数据缓存(packages.json)为何总“滞后”
它硬编码为 15 分钟不可配置,所谓“刷新频率”是误解;你看到的延迟,其实是镜像站同步 + 本地 15 分钟窗口叠加的结果。
- 强制刷新唯一办法:
composer update --refresh(Composer ≥ 2.5),它会删掉当前镜像对应的repo/下全部 provider 文件,重拉packages.json和provider-*.json -
--refresh不重下 ZIP 包,只更新元数据;但如果镜像站本身还没同步新版本,拉回来仍是旧快照 - CI 环境慎用
--refresh:它增加网络请求,反而抬高失败率;更稳的做法是加--no-cache -v,看真实请求是否命中镜像域名和返回 200 - 想绕过镜像 CDN 缓存(比如腾讯云 TKE 镜像自带的 24 小时 TTL),只能靠
--no-cache,别指望改本地配置能穿透服务端缓存
手动删缓存目录比等 15 分钟更快:rm -rf $(composer config --global cache-dir)/repo/https---mirrors-aliyun-com-composer(URL 中 :、/、. 全部转为 -)。
缓存清理后仍装旧包?真凶在 composer.lock
composer.lock 是版本事实的唯一权威,它固化了 dist URL、哈希值和 exact version;缓存再干净,只要锁文件没更新,Composer 就不会拉新包。
- 换镜像后想重装最新版,必须同时清理三处:
composer.lock、vendor/、~/.composer/cache/repo/对应镜像目录 - 仅
clear-cache不够:它不碰composer.lock,也不删vendor/composer/installed.json,这两个文件会让依赖解析继续沿用旧上下文 - 私有源已下线?删
repo/没用,得改composer.json中的repositories配置,否则下次update仍会尝试请求已失效地址 - 长期建议关掉 VCS 缓存:
composer config --global cache.vcs false,避免裸仓库再生;副作用仅是首次update稍慢(改走--prefer-dist)
最易被忽略的一点:sys_get_temp_dir() 下堆积的 composer_*.zip 和 php*.phar 文件,它们不属于 Composer 缓存体系,clear-cache 完全不管,但占空间、耗 inode,得单独查路径清理。










