Практически все разработчики регулярно сталкиваются с задачами по оптимизации скорости загрузки сайта; это один из самых важных показателей, который напрямую влияет на отношение пользователей и поисковиков к вашему сайту.
Чтобы узнать почему сайт загружается медленно, нужно уметь смотреть на все этапы этого процесса в отдельности и в этом материале мы узнаем как понять за сколько времени php обрабатывает код вашего сайта.
Логика этой функции достаточно простая: нам нужно запомнить точное время начала работы первого скрипта и вычесть его из времени окончания работы последнего скрипта на сайте.
Посмотрим на примере:
// Функции печатает время генерации страницы в комментариях внизу исходного кода
add_action( 'wp_head', 'skill_page_speed_start', 1 );
if ( ! function_exists( 'skill_page_speed_start' ) ) {
function skill_page_speed_start() {
$start_time = microtime();
$start_array = explode(" ", $start_time);
$GLOBALS['start_times'] = $start_array[1] + $start_array[0]; // пишем время в глобальную переменную
}
}
add_action( 'wp_footer', 'skill_page_speed_end', 90 );
if ( ! function_exists( 'skill_page_speed_end' ) ) {
function skill_page_speed_end() {
global $start_times; // получаем время из глобальной переменной
$end_time = microtime();
$end_array = explode(" ", $end_time);
$end_times = $end_array[1] + $end_array[0];
$time = $end_times - $start_times;
printf( "<!-- Страница сгенерирована за %f секунд -->", $time ); // печатаем комментарий
}
}
Сначала мы получаем стартовое время в глобальную переменную на хуке wp_head()
, отнимаем его из окончательного времени на хуке wp_footer()
и выводим в коде в виде комментария.
Теперь, чтобы увидеть результат, зайдите на ваш сайт, нажмите правую кнопки и выберите «Исходный код страницы»; нужный вам комментарий будет в самом низу.
Код, приведенный выше показывает только скорость, с которой php обработал весь код и вернул сгенерированный html, но он не учитывает ни скорость отдачи информации сервером, ни скорость рендеринга страницы у клиента, который как минимум включает загрузку стилей, скриптов, шрифтов и изображений.
Если у вас стоит какой-либо плагин кеширования, вероятно вы не увидите результат работы этой функции, т.к. сервер отдаст вам ранее сгенерированный html. Для этого вы должны сбросить кеш в админке.
Многие плагины оптимизации сжимают html и вырезают из него комментарии. Это может быть еще одной причиной, если вы не видите результаты работы этой функции.
Разумеется, если в вашем проекте отсутствуют функции wp_head()
или wp_footer()
результат вы так же не увидите, но добавить крайне желательно, без них WordPress не будет корректно работать.