Немного Википедии (хоть и переведенной на русский)
Time To First Byte («Время до первого байта, TTFB) — это измерение, используемое как указание на отзывчивость веб-сервера или другого сетевого ресурса.
TTFB измеряет продолжительность от пользователя или клиента, делающего HTTP-запрос к первому байту страницы, получаемой браузером клиента. Это время составлено из времени соединения сокета, времени, затраченного на отправку HTTP-запроса, и времени, затраченного на получение первого байта страницы. Хотя иногда неправильно понимается как вычисление после DNS, исходный расчет TTFB в сети всегда включает задержку сети в измерении времени, которое требуется для начала загрузки ресурса.
Часто меньший (более быстрый) размер TTFB рассматривается как ориентир хорошо настроенного серверного приложения. Например, более низкое время до первого байта может указывать на меньшее количество динамических вычислений, выполняемых веб-сервером, хотя это часто происходит из-за кэширования на уровне DNS, сервера или приложения. Чаще всего наблюдается очень низкий TTFB со статически обслуживаемыми веб-страницами, в то время как более крупный TTFB часто встречается с большими, динамическими запросами данных, извлекаемыми из базы данных.
Узнать TTFB (в секундах), используя cURL, можно следующим образом:
curl -q -o /dev/null -w "\nConnect: %{time_connect}\nTTFB: %{time_starttransfer}\nTotal time: %{time_total} \n" https://google.com
Что выведет приблизительно следующее:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 14053 0 14053 0 0 14053 0 --:--:-- --:--:-- --:--:-- 201k Connect: 0,008494 TTFB: 0,067665 Total time: 0,068982
Вообще, у вывода curl --write-out
ещё много разных полезных переменных, что можете узнать из страницы руководства curl
man curl
Вот пример со всеми включенными опциями вывода:
curl -q -o /dev/null -w "\n\ content_type: %{content_type}\n\ filename_effective: %{filename_effective}\n\ ftp_entry_path: %{ftp_entry_path}\n\ http_code: %{http_code}\n\ http_connect: %{http_connect}\n\ http_version: %{http_version}\n\ local_ip: %{local_ip}\n\ local_port: %{local_port}\n\ num_connects: %{num_connects}\n\ num_redirects: %{num_redirects}\n\ proxy_ssl_verify_result: %{proxy_ssl_verify_result}\n\ redirect_url: %{redirect_url}\n\ remote_ip: %{remote_ip}\n\ remote_port: %{remote_port}\n\ scheme: %{scheme}\n\ size_download: %{size_download}\n\ size_header: %{size_header}\n\ size_request: %{size_request}\n\ size_upload: %{size_upload}\n\ speed_download: %{speed_download}\n\ speed_upload: %{speed_upload}\n\ ssl_verify_result: %{ssl_verify_result}\n\ time_appconnect: %{time_appconnect}\n\ time_connect: %{time_connect}\n\ time_namelookup: %{time_namelookup}\n\ time_pretransfer: %{time_pretransfer}\n\ time_redirect: %{time_redirect}\n\ time_starttransfer: %{time_total}\n\ time_total: %{time_total}\n\ url_effective: %{url_effective}\n\ \n" https://google.com
Что выведет приблизительно следующее:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 14053 0 14053 0 0 14053 0 --:--:-- --:--:-- --:--:-- 178k content_type: text/html; charset=UTF-8 filename_effective: /dev/null ftp_entry_path: http_code: 200 http_connect: 000 http_version: 1.1 local_ip: 192.168.1.127 local_port: 44252 num_connects: 1 num_redirects: 0 proxy_ssl_verify_result: 0 redirect_url: remote_ip: 104.27.184.108 remote_port: 443 scheme: HTTPS size_download: 14053 size_header: 902 size_request: 81 size_upload: 0 speed_download: 14053,000 speed_upload: 0,000 ssl_verify_result: 0 time_appconnect: 0,028215 time_connect: 0,009203 time_namelookup: 0,007735 time_pretransfer: 0,028261 time_redirect: 0,000000 time_starttransfer: 0,078008 time_total: 0,078008 url_effective: https://google.com/