直接测 packages.json 的 TTFB 最准,需确认 repo.packagist 配置正确且生效、URL 末尾带 /、用 curl 测真实链路;TTFB 应 ≤200ms,同步延迟需对比 p2/xxx.json 版本列表验证;CI 中须显式配置并检查项目级 repositories 是否覆盖全局设置。

直接测 packages.json 的 TTFB(首字节时间)最准,composer config -g repo.packagist 只看配置是否写对,不测延迟;用 curl 打镜像地址才是真实链路验证。
先确认你真在用哪个镜像
很多同学以为自己配了阿里云,结果 composer config -g repo.packagist 输出还是 https://packagist.org 或为空——那根本没生效,测出来的“高延迟”只是官方源的正常表现。
-
repo.packagist必须是单数,写成repos.packagist或repositories.packagist.org都会被 Composer 2.2+ 静默忽略 - 输出应为完整 URL 或 JSON 对象,比如
{"type":"composer","url":"https://mirrors.aliyun.com/composer/"} - URL 末尾必须带
/,否则请求路径拼错,curl会返回 404 而不是慢
用 curl 测 packages.json 的真实 TTFB
packages.json 是每次 composer install 或 update 必请求的元数据入口,测它比测首页或健康页更贴近实际行为。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 推荐命令:
curl -w"DNS: %{time_namelookup} | TLS: %{time_appconnect} | TTFB: %{time_starttransfer} | TOTAL: %{time_total}\n" -o /dev/null -s https://mirrors.aliyun.com/composer/packages.json - 重点关注
TTFB值,国内用户通常应 ≤ 200ms;超过 500ms 就得查是不是 DNS 解析到了非就近节点 - 若报
SSL certificate problem,加-k跳过校验(仅测速用),说明问题在证书链而非网络 - 别用
ping——镜像站普遍禁 ICMP,且 ping 延迟和 HTTPS 请求无相关性
验证镜像是否同步最新包版本
延迟低 ≠ 包能装上。有些镜像 TTFB 很快,但 p2/xxx.json 还没同步新 tag,Could not find package 就是这么来的。
- 对比官方源和镜像源的版本列表:
curl -s https://packagist.org/p2/monolog/monolog.json | jq -r '.packages."monolog/monolog" | keys[]' | sort | tail -3 - 再跑一遍同命令,把域名换成你的镜像地址(如
https://mirrors.aliyun.com/composer/p2/...) - 两组输出不一致,说明镜像同步有延迟;此时即使 TTFB 合格,也装不了最新版
- 同步延迟一般 5–30 分钟,不是配置问题,不用换源,等或强制刷新:
composer update --refresh
注意 CI/CD 和项目级配置干扰
本地测得再快,CI 环境里可能完全失效——因为 composer config -g 不继承到容器,且项目 composer.json 里的 repositories 字段会无条件覆盖全局设置。
- GitHub Actions 等 CI 中,必须显式执行两条命令:
composer config -g repositories.packagist.org.type composer和composer config -g repositories.packagist.org.url https://mirrors.aliyun.com/composer/ - 在项目目录下运行
composer config repositories,看packagist.org对应的url是不是你预期的镜像地址 - 临时验证是否真走镜像:
composer install -vvv | grep -i "mirrors\|packages.json",没输出就说明流量根本没过去
真正卡住的时候,往往不是镜像慢,而是配置没生效、缓存没清、或者项目级 repositories 把全局设置盖掉了——TTFB 测出来再好,日志里看不到镜像域名,那就等于没配。

















