用curl测镜像快慢需分两步:测元数据延迟用curl -o /dev/null -s -w "%{time_starttransfer}\n" https://mirrors.aliyun.com/composer/packages.json取中位数,超1.5秒排除;测ZIP吞吐用curl -r 0-1048575 -o /dev/null -s -w "%{speed_download}\n" https://mirrors.tuna.tsinghua.edu.cn/composer/provider-laravel~framework.json,URL必须带/结尾以防302重定向。

怎么用curl测真实响应时间
测镜像快慢不能只看composer update耗时,得拆开看关键环节:元数据首字节延迟(packages.json)和 ZIP 包下载吞吐(provider-*.json)。这两步卡住,整个安装就卡死。
- 测元数据延迟:
curl -o /dev/null -s -w "%{time_starttransfer}\n" https://mirrors.aliyun.com/composer/packages.json,重复 3 次取中位数;超 1.5 秒的镜像直接排除 - 测 ZIP 下载速度:
curl -r 0-1048575 -o /dev/null -s -w "%{speed_download}\n" https://mirrors.tuna.tsinghua.edu.cn/composer/provider-laravel~framework.json - 必须带
/结尾,否则curl会 302 重定向,多耗 300ms+ - 每次测试前加
getent ahosts mirrors.aliyun.com确认 DNS 没缓存旧解析,避免误判
为什么测得快,但composer install还是忽快忽慢
Composer 不是单次请求,它串行拉取 packages.json → provider-*.json → dist ZIP → hash 校验 四步,且默认复用同一个 cURL handle。某一步卡住,整条链就堵住。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 镜像支持 HTTP/2 才能并发复用连接;阿里云目前仍是 HTTP/1.1,高依赖项目易排队
- TLS session 复用失败时,每包都要重新握手——加
--no-keepalive测试,若变稳,说明你网络对 OCSP Stapling 支持差 - 杀毒软件或防火墙可能拦截 HTTPS 流量,尤其 Windows 上的 McAfee、腾讯电脑管家常静默丢包
-
parallel-downloads设太高反而更慢:Composer 2.2+ 默认为 3,设到 10 在多数家用宽带下会触发镜像限流
如何验证镜像是否真同步、真可用
配置对 ≠ 能用。很多“换源后仍装不到新包”,其实是镜像同步滞后或返回了错误状态码,不是本地问题。
- 打开浏览器访问
https://packagist.org/packages/laravel/framework,再对比镜像站同地址:https://mirrors.aliyun.com/composer/p/laravel/framework.json,看 latest 版本号是否一致 - 用
curl -I https://mirrors.huaweicloud.com/repository/php/packages.json检查返回码:HTTP/2 200 ✅,403/404/302 ❌ - 遇到
Package not found,先确认包是否已被作者下架(腾讯云不保留已删包),别急着换源 - 执行
composer update --dry-run -v,终端里出现Downloading https://mirrors.tuna.tsinghua.edu.cn/composer/...才算真正命中镜像
项目级配置会完全屏蔽全局设置
很多人配了全局镜像却没生效,是因为项目根目录的composer.json里写了repositories字段——它优先级最高,且不报错、不提醒。
- 查当前生效源:
composer config -g repo.packagist(注意是单数repo,不是repos) - 如果输出为空或
{"type":"composer","url":"https://packagist.org"},说明全局没生效,或被项目级覆盖 - 查项目级配置:
composer config repo.packagist(不带-g),看是否意外继承了旧配置 - 临时绕过所有自定义源验证:
composer install --repository-url=https://mirrors.aliyun.com/composer/ --no-cache -v
clear-cache,或者composer.json里残留了已失效的镜像 URL,导致 Composer 静默 fallback 到官方源,连错误都不报。

















