Кто-нибудь может мне помочь понять, как работают переменные CURLINFO _ * _ TIME из реализаций libcurl (пробовал стандартные Linux curl и pycurl), в основном: что такое REDIRECT_TIME и когда происходят все перенаправления?
Из документации libcurlв https://curl.haxx.se/libcurl/c/curl_easy_getinfo.html:
|--NAMELOOKUP
|--|--CONNECT
|--|--|--APPCONNECT
|--|--|--|--PRETRANSFER
|--|--|--|--|--STARTTRANSFER
|--|--|--|--|--|--TOTAL
|--|--|--|--|--|--REDIRECT
Определения:
NAMELOOKUP - время, которое прошло с начала до завершения разрешения имени.
CONNECT - время, которое потребовалосьот начала до тех пор, пока не будет установлено соединение с удаленным хостом (или прокси).
APPCONNECT - время, которое прошло с начала до завершения соединения / рукопожатия SSL с удаленным хостом.
PRETRANSFER - время, которое прошло с начала до передачи файла, вот-вот начнется.Это включает в себя все команды предварительной передачи и согласования, которые являются специфическими для конкретного протокола (ов).
STARTTRANSFER - Время, которое потребовалось от начала до получения первого байта libcurl.
TOTAL - общее время предыдущего запроса.
REDIRECT - время, которое потребовалось для всех шагов перенаправления, включая поиск по имени, подключение, предварительный перенос и передачу до начала окончательной транзакции.Итак, это ноль, если переадресация не произошла.
Теперь, время, которое я получаю, заставляет меня поверить, что ниже верно: PRETRANSFER + REDIRECT + X = TOTAL Это правильно, т.е.происходит ли перенаправление непосредственно перед отправкой первого байта ответа, или 30 * код является началом ответа?Что такое X?
Примеры (с помощью команды curl в Ubuntu 18.10 и pycurl на python 3.6.7):
pycurl:
HTTP Status: 200
EFFECTIVE_URL: https://www.wp.pl/
REDIRECT_COUNT: 2
SIZE_DOWNLOAD: 634.7 kB
SPEED_DOWNLOAD: 690.7 kB
CONTENT_TYPE: text/html; charset=utf-8
NAMELOOKUP: 0.072
CONNECT: 0.241
APPCONNECT: 0.216
PRETRANSFER: 0.401
STARTTRANSFER: 0.640
REDIRECT: 0.300
TOTAL_TIME: 0.919
curl:
"http_code": 200,
"num_redirects": 2,
"size_download": 664472,
"speed_download": 543757,
"time_namelookup": 0.100274,
"time_pretransfer": 0.408898,
"time_redirect": 0.333625,
"time_starttransfer": 0.636432,
"time_total": 1.222781,
"url_effective": "https://www.wp.pl/"
pycurl:
HTTP Status: 200
EFFECTIVE_URL: https://edition.cnn.com/
REDIRECT_COUNT: 3
SIZE_DOWNLOAD: 1851.8 kB
SPEED_DOWNLOAD: 1997.6 kB
CONTENT_TYPE: text/html; charset=utf-8
NAMELOOKUP: 0.064
CONNECT: 0.195
APPCONNECT: 0.289
PRETRANSFER: 0.417
STARTTRANSFER: 0.550
REDIRECT: 0.364
TOTAL_TIME: 0.927
curl:
"content_type": "text/html; charset=utf-8",
"http_code": 200,
"num_redirects": 3,
"size_download": 1896220,
"speed_download": 2273645,
"time_namelookup": 0.154532,
"time_pretransfer": 0.441366,
"time_redirect": 0.392132,
"time_starttransfer": 0.574551,
"time_total": 0.834307,
"url_effective": "https://edition.cnn.com/"