curl 请求慢,先拆开 DNS、TCP、TLS 和首字节时间

第 2 页

原文提到的 --resolve 还有个关键点:它只替换名称到 IP 的解析,URL 里的主机名、HTTPS 的 SNI 和 HTTP Host 仍保持不变,所以比直接请求 https://IP/ 更适合做 DNS 路径对照。直接写 IP 可能命中别的虚拟主机,或因证书名称不匹配而失败,测出来就不是同一条请求路径。

用法里主机名和端口要与 URL 完全对应,例如 --resolve 'example.com:443:203.0.113.10' https://example.com/health。复测时同时记录 remote_ip,确认确实连到了指定地址;若目标经常变更,也别把临时 IP 固化到长期监控里。

还有个复测变量容易被忽略:curl 默认会读取用户配置文件,里面若有 proxyresolveretrylocation 或超时设置,命令行看着相同,实际路径也可能不同。curl 7.61+ 可以把 -q 放在第一个参数,跳过默认配置文件:

curl -q -sS -o /dev/null ...

这里“第一个参数”很关键;-q 也不会忽略 HTTP(S)_PROXY 等环境变量,代理路径仍要单独核对。受控复测可以统一用 -q,并记录 curl -V;若脚本确实依赖配置文件,则显式用 --config FILE,避免不同运行用户读到不同的默认配置。