Почему автоматические частые запросы вредят производительности WordPress
В WordPress часто возникают фоновые запросы, которые выполняются автоматически и могут создавать существенную нагрузку на сервер. Это могут быть запросы к API, частые AJAX-запросы, запросы обновления информации, пинговые запросы и пр. Если их не контролировать, сайт может начать тормозить, особенно на слабых хостингах или при высоком трафике.
Удаление или блокировка таких запросов помогает снизить нагрузку на базу данных и сервер, улучшает скорость отклика и уменьшает потребление ресурсов. Важно понимать, какие именно запросы считаются «частыми» и автоматическими, чтобы не повредить функциональность сайта.
Примеры таких запросов:
- Периодические обращения к REST API для обновления данных
- Автоматические вызовы AJAX в админке и на фронтенде
- Пингбэки и трекбэки
- Запросы Heartbeat API
Основные типы автоматических запросов и как их контролировать
1. WordPress Heartbeat API
Heartbeat API отвечает за периодические AJAX-запросы, которые обновляют сессии, автосохранения, показывают уведомления и т.д. По умолчанию он работает каждые 15-60 секунд, что может создавать избыточную нагрузку.
Чтобы уменьшить частоту или отключить Heartbeat API на страницах, где он не нужен, можно использовать следующий код:
function wplessons_disable_heartbeat() {
// Отключаем Heartbeat API полностью
wp_deregister_script('heartbeat');
}
add_action('init', 'wplessons_disable_heartbeat');Если нужно только уменьшить частоту, а не отключать полностью, примените фильтр:
function wplessons_heartbeat_frequency( $settings ) {
$settings['interval'] = 60; // увеличить интервал до 60 секунд
return $settings;
}
add_filter( 'heartbeat_send', 'wplessons_heartbeat_frequency' );2. Пингбэки и трекбэки
Пингбэки и трекбэки – это автоматические уведомления о ссылках между блогами. Их отключение уменьшает количество входящих запросов и спама.
Отключить можно через админку в Настройки > Обсуждение, убрав галочку с «Разрешить уведомления о ссылках от других блогов (пингбэки и трекбэки) для новых статей».
Для отключения программно добавьте в functions.php:
function wplessons_disable_pingbacks( &$links ) {
$links = [];
}
add_action( 'pre_ping', 'wplessons_disable_pingbacks' );3. Частые AJAX запросы сторонних плагинов
Многие плагины делают частые AJAX вызовы, например, для проверок обновлений, статистики или кэширования. Иногда их можно отключить или оптимизировать.
Для выявления таких запросов включите в лог запросы с помощью Query Monitor или Debug Bar. После выявления можно запретить отдельные AJAX экшены, например:
function wplessons_disable_unneeded_ajax() {
// Отключаем AJAX экшен 'some_plugin_check'
remove_action('wp_ajax_some_plugin_check', 'some_plugin_check_callback');
remove_action('wp_ajax_nopriv_some_plugin_check', 'some_plugin_check_callback');
}
add_action('init', 'wplessons_disable_unneeded_ajax');Плагины для управления и оптимизации автоматических запросов
Если вы не хотите писать код, можно использовать готовые решения:
- Clearfy Pro — содержит опции для отключения Heartbeat API, отключения пингбэков, удаления лишних запросов и оптимизации загрузки сайта. Подробнее на wpshop.ru.
- WP Rocket — плагин для кэширования и оптимизации, умеет уменьшать количество запросов и оптимизировать AJAX вызовы.
- Heartbeat Control by WP Rocket — отдельный плагин для управления частотой Heartbeat API.
Практическое руководство: отключение Heartbeat API на фронтенде и в админке
Часто необходимо отключить Heartbeat API на фронтенде, чтобы уменьшить нагрузку, но оставить в админке для автосохранений. Для этого используйте следующий код:
function wplessons_manage_heartbeat( $settings ) {
if ( ! is_admin() ) {
$settings['interval'] = 300; // Интервал 5 минут на фронтенде
}
return $settings;
}
add_filter( 'heartbeat_send', 'wplessons_manage_heartbeat' );
function wplessons_deregister_heartbeat_script() {
if ( ! is_admin() ) {
wp_deregister_script('heartbeat');
}
}
add_action( 'wp_enqueue_scripts', 'wplessons_deregister_heartbeat_script' );Этот код увеличит интервал Heartbeat API на фронтенде до 5 минут и при этом отключит скрипт, что полностью уберёт запросы. В админке же Heartbeat API будет работать штатно для сохранения черновиков и других функций.
Как отследить и проанализировать частые запросы на сайте
Чтобы понять, какие именно автоматические запросы нагружают ваш сайт, используйте инструменты:
- Query Monitor — плагин для анализа запросов к базе данных, AJAX и REST API вызовов.
- Debug Bar — позволяет увидеть детали запросов и ошибки.
- Инструменты разработчика браузера (Network tab) — для просмотра AJAX-запросов на фронтенде.
Собрав данные, вы сможете определить, какие запросы наиболее частые и нужно ли их отключать или оптимизировать.
Резюме и рекомендации
Удаление и контроль автоматических частых запросов — важный шаг для оптимизации WordPress-сайта. Особенно это актуально для сайтов с большим трафиком и ограниченными ресурсами хостинга.
Рекомендуется:
- Отключить или увеличить интервал Heartbeat API, если вы не нуждаетесь в частых обновлениях.
- Отключить пингбэки и трекбэки, чтобы уменьшить входящий трафик.
- Мониторить AJAX-запросы сторонних плагинов и отключать неиспользуемые.
- Использовать готовые плагины, такие как Clearfy Pro, для удобного управления.
Такой подход позволит значительно снизить нагрузку на сервер и ускорить работу вашего WordPress-сайта.