技术与生活 / 一篇记录
页面慢在解析、建连,还是等待正文?
DNS、建连、TLS 和等待响应是不同阶段,分阶段计时更容易定位瓶颈。
把总耗时拆开,能避免把 DNS 慢、TLS 慢和应用处理慢都归因于服务器性能。curl 的时间字段多为自请求开始累计的值,解释阶段时要注意差值关系。
操作与观察
域名 example.com 仅用于说明,核查自己的网站时请替换目标地址。
curl -sS -o /dev/null -w 'dns=%{time_namelookup} connect=%{time_connect} total=%{time_total}\n' https://example.com/
比较多次结果,找出耗时主要增加在哪个阶段。
连续采样并记录是否使用缓存和代理。连接复用后的结果与新建连接不同,应先统一测试条件,再判断哪个阶段需要优化。
总耗时还可能受到响应大小影响。比较两个页面前,应确认是否都只检查响应头、是否完整读取正文。下载一个大文件和获取一个小状态接口,不能直接以同一数值判断网络质量。
别遗漏这条边界
代理场景下的连接耗时不一定代表到目标站的真实网络往返。
参考:HTTP 文档。