Измерения времени HEAD в PycURL охватывают весь путь через прокси
Сократите трафик тела ответа при измерении запроса через прокси, не путая накопленный TTFB с собственной задержкой обработки на прокси.
Запрос HEAD позволяет сократить трафик тела ответа при сравнении прокси. На существующем дескрипторе PycURL, уже настроенном с адресом назначения, прокси и тайм-аутами:
handle.setopt(pycurl.NOBODY, True)
handle.perform()
ttfb = handle.getinfo(pycurl.STARTTRANSFER_TIME)
prepared = handle.getinfo(pycurl.PRETRANSFER_TIME)
Считывайте эти значения после успешной передачи и до закрытия дескриптора. NOBODY выбирает HEAD для HTTP; он не убирает заголовки запроса, согласование с прокси и трафик TLS.
STARTTRANSFER_TIME — время от начала передачи до первого байта ответа. Оно включает подготовку и обработку на сервере, поэтому измеряет именно этот маршрут и адрес назначения, а не изолированную задержку прокси. PRETRANSFER_TIME охватывает подготовку протокола; даже вычтя его, за пределами самого прокси остаётся работа.
Сохраняйте одинаковыми адрес назначения, политику перенаправлений и условия повторного использования соединения во всех сравнениях. Время перенаправлений накапливается. Новое соединение и повторно используемый туннель отвечают на разные вопросы о производительности.
HEAD может вести себя иначе, чем GET. Используйте его для лёгкого наблюдения за доступностью или временем, а затем отдельно проверяйте фактический метод при выборе маршрута для приложения.