composer update --refresh 是唯一可控的元数据刷新动作,它强制跳过缓存重拉一次元数据,不调节频率;composer 客户端无同步频率参数,缓存策略硬编码为15分钟且不可配置。

composer update --refresh 是唯一可控的元数据刷新动作,它不调节“频率”,而是强制跳过缓存重拉一次。Composer 本身没有客户端可设的同步频率参数——镜像站的数据更新由服务端控制,你无法让它“每3分钟同步一次”。
为什么不能设置 Composer 客户端的元数据刷新频率
Composer 的设计里根本没有“定时检查更新”机制。它只在运行 composer update、composer require 等命令时才去拉取远程 packages.json,且默认复用本地缓存(有效期 15 分钟)。这个缓存策略是硬编码的,不可通过配置缩短或延长。
所谓“刷新频率”,其实是你手动触发 --refresh 的节奏,以及镜像站服务端同步的及时性。你改不了 Composer,但可以绕过它的缓存逻辑:
-
composer update --refresh(≥2.5):清掉所有 provider 缓存,只重拉元数据,不重下 ZIP 包 - 手动删
~/.composer/cache/repo/https---mirrors-aliyun-com-composer目录( - 临时加
--no-cache -v观察真实请求 URL 和状态码,确认是否命中镜像
镜像站实际同步延迟才是关键瓶颈
截至 2026 年 7 月,主流中文镜像的同步节奏如下:
- 阿里云:
https://mirrors.aliyun.com/composer/,实测首波同步延迟通常 1–3 分钟,最稳 - 腾讯云 / 华为云:5–10 分钟常见,新包(尤其是
dev-main或刚打 tag 的)可能首波漏同步 - 清华源:
https://mirrors.tuna.tsinghua.edu.cn/composer/,教育网快,但南方用户偶发 DNS 慢;同步略保守,部分小众包延迟可达 15 分钟+
如果你等了 20 分钟还装不到新版,大概率不是 Composer 没刷新,而是镜像站压根还没同步过去。验证方式很简单:直接访问 https://mirrors.aliyun.com/composer/p/vendor/package-name.json,搜版本号,看是否存在。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
项目级 repositories 配置会彻底屏蔽全局镜像
很多人配了全局镜像却没效果,是因为项目根目录的 composer.json 里写了 repositories 字段。只要存在,哪怕内容是空对象或指向已下线的私有源,Composer 就会无视 repo.packagist 全局设置。
排查方法:
- 运行
composer config repo.packagist(不带-g),看输出是否为空或无效值 - 执行
composer config --list | grep repositories,确认当前生效的是哪个源 - CI 构建失败时,第一件事就是检查
composer.json里有没有残留的"repositories": [...]
别依赖 composer clear-cache 刷元数据
composer clear-cache 看似彻底,但它只清 ZIP 包和部分 provider 缓存,下次 update 仍会立刻重建并复用旧的 packages.json——只要它没过期(默认 15 分钟内不重拉)。
真正卡点是元数据缓存策略,不是缓存目录是否存在。所以:
- 想确保拿到最新版?先
composer config -g repo.packagist确认地址对,再composer update --refresh - 用老版本 Composer?必须手动删
cache-dir/repo/下对应镜像子目录 - 频繁调试?加
--no-cache -v最直接,但别长期开着,它每次都会重拉,拖慢流程










