Скорость ответа сервера при обращении к сайту можно измерить при помощи утилит wget или curl, запускаемых в цикле for. Это позволяет избежать кэширования браузером. Если обращаться к сайту через браузер данные будут кэшироваться при первом обращении. При каждом последующем содержимое страниц станет отдаваться пользователю быстрее.
Для проверки скорости отдачи контента сервером такой способ не подходит и следует использовать консольные утилиты, которые позволят избежать браузерного кэширования.
Скорость ответа сервера и ее измерение
Используя curl можно обращаться к определенному адресу указывая задержку.
Адрес предполагает указание протокола (http или https), доменного имени и скрипта/файла (опционально).
$ time for i in {1..50}; do curl http://example.com/test.php; sleep 0.1; done
Запросом, представленным выше можно с задержкой 0.1 секунд попытаться обратиться к скрипту 50 раз. В консоль при этом будет выведено среднее время обращений:
real 0m11.313s
user 0m0.260s
sys 0m0.140s
Получен результат 11 секунд на 50 запросов при том что между запросами была пауза 0.1 секунды. Это хороший результат, говорящий о том что проблем нет, сервер отвечает быстро. Задержки в несколько секунд на каждый запрос говорили бы о проблемах.
С количеством запросов можно экспериментировать.
Важно не перегружать сервер запросами и при количестве запросов более пары десятков добавлять задержки.
Если запускать такие проверки с большим количеством запросов на публичные ресурсы — адрес, с которого идут запросы, может быть заблокирован, также возможные юридические последствия.
Результаты будут очень сильно зависеть от особенностей работы программного кода. Результаты будут зависеть от оптимизации северного ПО и используемого аппаратного обеспечения.
Таким образом взяв один сайт и разместив его на двух разных серверах с одинаковой конфигурацией можно сравнивать скорость ответа. Выбирать таким образом лучшее аппаратное обеспечение и настройки.
Как выяснить что отвечает долго: сайт или сервер
Исключить влияние кода можно проводя такие же тесты при обращении к статическому файлу.
В корне сайта можно создать файл text.txt, добавить в него пару слов и обращаться к файлу.
В этом случае будут исключены любые задержки вызванные работой кода и интерпретатора PHP.
Можно разместить в корне файл с самым простым PHP кодом, например с функцией выводящей настройки PHP.
При таком варианте тест будет учитывать время на работу интерпретатора PHP и настройки для PHP. Но при этом будет исключаться код сайта и возможные задержки вызванные его работой. За счет использования простейшего скрипта появляется возможность абстрагироваться от кода приложения.
Если тесты с текстовым файлом и простейшим скриптом показывают, что задержки нет, но сайт при этом открывается долго, значит причина в сайте.
Для анализа причин задержек в работе реального приложения можно использовать сервис Google Developers Pagespeed Insights.
Он дает рекомендации позволяющие ускорить веб-приложения (статья о сервисе Google Developers Pagespeed Insights).