PycURL 的 HEAD 计时测量的是整条代理链路
在测量代理请求耗时时减少响应体流量,同时不要把累计 TTFB 与代理自身的处理延迟混为一谈。
在比较代理时,HEAD 请求可以减少响应体流量。在已配置好目标、代理和超时的现有 PycURL 句柄上:
handle.setopt(pycurl.NOBODY, True)
handle.perform()
ttfb = handle.getinfo(pycurl.STARTTRANSFER_TIME)
prepared = handle.getinfo(pycurl.PRETRANSFER_TIME)
请在传输成功之后、关闭句柄之前读取这些值。NOBODY 会为 HTTP 选择 HEAD,但它并不会去掉请求头、代理协商或 TLS 流量。
STARTTRANSFER_TIME 是从传输开始到收到第一个响应字节所经过的时间。它包含准备阶段和服务器处理,因此衡量的是这条链路和这个目标,而不是代理自身的单独延迟。PRETRANSFER_TIME 覆盖协议准备阶段;即使把它减去,代理之外的工作依然存在。
在所有对比中,请保持目标、重定向策略和连接复用条件一致。重定向的耗时会累加。新建连接与复用隧道回答的是不同的性能问题。
HEAD 的行为也可能与 GET 不同。可以用它做轻量的可达性或耗时观察,随后在为应用选择链路时另行验证真正的请求方法。