换中文镜像源后仍卡在Downloading,根本原因是旧缓存中存有packagist.org的元数据和ZIP包,Composer优先复用而非拉取新镜像;必须执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(末尾斜杠不可少)并立即运行composer clear-cache,且验证输出中"url"字段确为镜像地址。

换中文镜像源本身不触发缓存清理,但不清缓存就等于白换——旧缓存仍会走海外源下载,镜像加速完全失效。
为什么换了阿里云镜像还卡在Downloading
根本原因不是镜像没配好,而是本地缓存里还存着 packagist.org 的元数据和 ZIP 包,composer install 优先复用这些“合法但过期”的文件,根本不会去新镜像拉取。
- 执行
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/后,必须立刻跟composer clear-cache - 验证是否生效:
composer config -g repos.packagist输出中"url"字段必须是镜像地址,不能含packagist.org -
clear-cache不会清repo/packagist.org/以外的元数据,若你用过私有源或 Satis,得单独清对应子目录
clear-cache 清的是什么,又漏了什么
composer clear-cache 只删 cache-dir 下的 files/、repo/、vcs/ 三个子目录,但它对磁盘空间和构建速度的影响极不均衡:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
files/:清 ZIP 包,省下载时间,但不省解压和 autoload 生成时间 -
repo/:清packages.json快照,下次composer update会变慢(需重拉索引) -
vcs/:默认不清理!这是No space left on device的最大元凶,每个 Git 裸仓库占 300–800 MB + 上万 inodes
所以光靠 clear-cache 治标不治本;真正要省空间,得手动删 vcs/ 或设 composer config --global cache.vcs false。
Docker 和 CI 中缓存失效的真相
CI 构建里常看到 “镜像已切,缓存却没命”,问题不在镜像,而在构建层没保留 vendor/ 或误删了 composer.lock:
- 只缓存
~/.composer/cache,但每次rm -rf vendor→composer install仍要解压 + 安装,镜像只省了下载 - 正确做法是用
COPY --from=builder /app/vendor /app/vendor直接复用构建产物,跳过所有解析阶段 - GitHub Actions 等无 TTY 环境下,
composer clear-cache会 hang,必须加--no-interaction
最易被忽略的一点:镜像源的 CDN 缓存(比如腾讯云 TKE 镜像)有自己的 X-Composer-Cache-TTL 头,本地清完缓存,packages.json 仍可能被镜像服务器缓存 24 小时——这时 composer install --no-cache 才是唯一能绕过的办法。

















