Чтение времён прокси cURL со стороны клиента
Интерпретируйте времена соединения, TLS, первого байта и общего времени, не приписывая ненаблюдаемую работу выше по цепочке измерению только прокси.
Предположим, cURL открывает новое TCP-соединение с обычным HTTP-прокси, устанавливает туннель HTTPS и загружает один ответ. Эти времена описывают этапы, которые cURL наблюдал на этом пути.
| Значение | Этап, отсчитываемый от начала передачи |
|---|---|
| time_connect | Соединение с прокси установлено |
| time_appconnect | Соответствующее рукопожатие TLS завершено |
| time_starttransfer | Получен первый байт ответа |
| time_total | Передача завершена |
Для иллюстративной записи в POSIX-оболочке:
curl --proxy http://proxy.example:8080 \
--output /dev/null \
--write-out 'connect=%{time_connect} tls=%{time_appconnect} first=%{time_starttransfer} total=%{time_total}\n' \
https://example.com/
Для разрешённого публичного сравнения по HTTPS без учётных данных прокси можно подставить HTTP-запись из списка HTTP-прокси вместо прокси из примера. Значения — накопленные секунды. Это не четыре независимые длительности, которые нужно складывать. Держите ошибку передачи и статус ответа рядом с числами: неудавшееся соединение или отклонённый туннель не достигли каждого последующего этапа.
Что может показать вычитание
Для одного успешного ответа time_total минус time_starttransfer описывает оставшийся интервал после прихода первого байта. Это в основном последующая передача ответа и связанная с ней работа на стороне клиента. Это не время прокси на соединение с сайтом, потому что оно произошло раньше, чем мог прийти ответ.
Точно так же time_starttransfer минус time_connect может включать построение туннеля, TLS, ожидания в вышестоящей сети, работу сервера и другую обработку. Называть всю разницу «задержкой прокси» — значит приписывать несколько составляющих одному участнику.
Чтобы отделить ожидания прокси по DNS, соединению и ответу, получите соответствующие наблюдения или трассировки со стороны прокси. Клиент не получает этих внутренних отметок времени только потому, что использует HTTP CONNECT.
Сравнивайте эквивалентные передачи. Перенаправления добавляют времена нескольких запросов, а повторное использование соединений и мультиплексирование меняют то, какая подготовительная работа нужна. Запишите эти условия, прежде чем сравнивать числа одного прокси с числами другого.