在比较代理时,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 不同。可以用它做轻量的可达性或耗时观察,随后在为应用选择链路时另行验证真正的请求方法。

相关文章