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 と異なる挙動をすることもあります。軽い到達性や時間の観測に使い、アプリケーション用の経路を選ぶときは実際のメソッドを別途検証してください。

関連記事