Curl измеряет скорость ответа сайта

Вот что интересного накопал об использовании утилиты Curl. Проверка скорости сайта. Всё сделано руками и с любовью. БыстроТериминал и только.

Делаем файл sitespeed.curl, с описанием формата вывода информации о замерах скорости, буквально можно выполнить такую команду целиком:

echo '
\nTest response time for:\t%{url_effective}\n\n
Lookup Time:\t\t\t%{time_namelookup}\n
Connect Time:\t\t\t%{time_connect}\n
AppCon Time:\t\t\t%{time_appconnect}\n
Redirect Time:\t\t\t%{time_redirect}\n
Pre-transfer Time:\t\t%{time_pretransfer}\n
Start-transfer Time:\t\t%{time_starttransfer}\n\n
Total Time:\t\t\t%{time_total}\n' | tee sitespeed.curl

Для справки, что значит time_pretransfer?

  • time_namelookup: длительность просмотра DNS (перевод имени домена в IP-адрес).
  • time_connect: длительность рукопожатия TCP (выполненного как при HTTP, так и при HTTPS-запросах).
  • time_appconnect: длительность рукопожатия SSL (только для HTTPS).
  • time_redirect: длительность перенаправления. Значение равно 0, если перенаправления не было. В cURL для активации перенаправления требуется флаг -L.
  • time_pretransfer: по сути, это псевдоним для time_appconnect либо time_connect (в зависимости от HTTP или HTTPS). Он пригождается только в качестве указателя на то, когда начался конкретный запрос к серверу.
  • time_starttransfer: обозначает готовность сервера к передаче байтов. То же, что и TTFB (Time To First Byte). Он включает в себя time_pretransfer. Чтобы получить продолжительность этой фазы, нужно просто вычесть time_pretransfer из time_starttransfer.
  • time_total: общая продолжительность всего вызова cURL. Для получения времени передачи данных (их скачивания) нужно вычислить time_totaltime_starttransfer.

И так, продолжаем.

Уже можно протестировать командой в терминале:

curl -s -w "@sitespeed.curl" -o /dev/null morikoff.ru

Но мы сделаем маленький скрипт, которому будем передавать одно значение – это адрес сайта, как с указанием протокола, так и без (по скорости отклика имеет значение).

Создаём файл:

nano sitespeed.sh

Вставляем в файл следующий код:

############################################
#!/bin/bash
############################################
curl -s -w "@sitespeed.curl" -o /dev/null $1

Дайте скрипту право быть запущенным на выполнение.

chmod +x sitespeed.sh

Пожалуй всё.

Запускаем:

./sitespeed.sh morikoff.ru