Если WordPress на слабом хостинге начинает заметно тормозить, Heartbeat API часто оказывается среди первых подозреваемых. Это не «ошибка» и не лишняя функция сама по себе: Heartbeat нужен для автосохранения, уведомлений, синхронизации состояния редактора и некоторых действий в админке. Проблема в том, что он регулярно отправляет AJAX-запросы на сервер, а на дешёвом shared-хостинге или при большом количестве открытых вкладок это превращается в лишнюю нагрузку.
Полностью отключать Heartbeat вслепую не стоит. Гораздо практичнее понять, где он действительно мешает, и ограничить его только там, где это безопасно: в админке, на экране редактирования записей или на фронтенде.
Где Heartbeat API создаёт нагрузку
Heartbeat работает через запросы к admin-ajax.php. По умолчанию WordPress периодически обращается к серверу, чтобы обновлять состояние интерфейса. На одном сайте это почти незаметно, но нагрузка растёт, если:
- в админке одновременно открыто несколько вкладок;
- редакторы долго держат открытой страницу редактирования записи или страницы;
- на сайте много авторизованных пользователей, которые работают в панели;
- хостинг ограничивает CPU и количество одновременных PHP-процессов;
- на фронтенде подключены плагины, использующие Heartbeat для своих задач.
Чаще всего проблема проявляется не как один «тяжёлый» запрос, а как постоянный фон из мелких обращений, которые суммарно нагружают сервер. Поэтому отключение или замедление Heartbeat полезно именно на слабых конфигурациях.
Что лучше: отключить полностью или ограничить
Для большинства сайтов безопаснее не отключать Heartbeat целиком, а урезать его там, где он не нужен. Полное отключение может сломать автосохранение в редакторе, предупреждения о занятом посте и часть функций плагинов, которые рассчитывают на этот механизм.
| Вариант | Когда подходит | Что теряете |
|---|---|---|
| Отключить на фронтенде | Если сайт в основном статичный и авторизованные пользователи не работают с интерфейсом на публичной части | Функции плагинов, завязанные на Heartbeat на фронтенде |
| Ограничить в админке | Если нужно снизить нагрузку, но сохранить автосохранение и базовые функции редактора | Меньшую частоту обновлений |
| Отключить полностью | Если вы точно знаете, что ни тема, ни плагины не используют Heartbeat | Автосохранение, уведомления и совместную работу в редакторе |
Если сайт рабочий и на нём регулярно редактируют контент, я бы начинал с ограничения, а не с полного отключения.
Как отключить Heartbeat API через код
Самый надёжный способ — добавить небольшой фрагмент в functions.php дочерней темы или в собственный мини-плагин. Если вы правите тему, делайте это в дочерней теме: обновление родительской темы не затрёт изменения.
Чтобы полностью отключить Heartbeat на всём сайте, используйте такой код:
add_action( 'init', function () {
wp_deregister_script( 'heartbeat' );
} );Этот вариант убирает скрипт Heartbeat из загрузки. Но он же отключает и полезные функции, поэтому применять его стоит только если вы уверены, что сайт не зависит от этого механизма.
Более безопасный вариант — ограничить частоту запросов. WordPress позволяет менять интервал через фильтр heartbeat_settings:
add_filter( 'heartbeat_settings', function ( $settings ) {
$settings['interval'] = 60;
return $settings;
} );Здесь интервал задан в секундах. По умолчанию он обычно заметно меньше, поэтому увеличение до 60 секунд снижает количество запросов. Это не отключение, а именно уменьшение частоты. Для слабого хостинга такой подход часто даёт лучший баланс между экономией ресурсов и сохранением функций редактора.
Как отключить Heartbeat только в админке или только на фронтенде
Если нагрузка идёт в основном от публичной части сайта, имеет смысл убрать Heartbeat только там. Если же проблема возникает у редакторов в панели, ограничьте его в админке.
Для отключения на фронтенде подойдёт такой код:
add_action( 'init', function () {
if ( ! is_admin() ) {
wp_deregister_script( 'heartbeat' );
}
} );Для отключения в админке логика обратная:
add_action( 'admin_enqueue_scripts', function () {
wp_deregister_script( 'heartbeat' );
} );Но здесь есть важная оговорка: полное отключение в админке может мешать автосохранению и работе редактора. На практике чаще используют не снятие скрипта, а увеличение интервала только в панели:
add_filter( 'heartbeat_settings', function ( $settings ) {
if ( is_admin() ) {
$settings['interval'] = 60;
}
return $settings;
} );Такой вариант обычно безопаснее, чем жёсткое отключение. Он снижает количество запросов, но не ломает редактор так резко, как полное удаление скрипта.
Как проверить, что Heartbeat действительно отключён или замедлен
После изменения кода не ориентируйтесь только на ощущение, что «сайт стал быстрее». Лучше проверить фактами.
Самый простой способ — открыть инструменты разработчика в браузере и посмотреть сетевые запросы. На вкладке Network отфильтруйте запросы по admin-ajax.php. Если Heartbeat отключён, регулярные запросы исчезнут. Если вы только увеличили интервал, они станут реже.
Ещё один практичный способ — открыть редактор записи и оставить вкладку на несколько минут. Если Heartbeat работает, в Network будут появляться повторяющиеся AJAX-запросы с заданным интервалом. Если запросов нет, значит скрипт не загружается или отключён.
На серверной стороне полезно посмотреть логи хостинга или статистику нагрузки, если она доступна в панели. Heartbeat не всегда выделяется отдельно, но при высокой активности вы обычно увидите снижение числа обращений к admin-ajax.php.
Что может сломаться после отключения
Перед отключением важно понимать побочные эффекты. Heartbeat используется не только для «фоновой активности», но и для функций, которые пользователь замечает не сразу.
- Автосохранение в редакторе может работать хуже или исчезнуть.
- Предупреждения о том, что запись уже редактируется другим пользователем, могут не появляться.
- Некоторые плагины используют Heartbeat для синхронизации состояния в админке или на фронтенде.
- Если вы отключите скрипт глобально, часть интерфейса может вести себя нестабильно в старых или сильно кастомизированных установках.
Поэтому на живом проекте лучше сначала сделать резервную копию и проверить изменения на staging-копии, если она есть. Это особенно важно, если сайт активно редактируется несколькими людьми.
Когда Heartbeat лучше не трогать
Если сайт работает на нормальном сервере, а нагрузка умеренная, отключение Heartbeat может дать мало пользы и добавить рисков. Не трогайте его без необходимости, если:
- редакторы часто работают одновременно в админке;
- на сайте важны автосохранение и совместная работа;
- вы используете плагины, которые явно завязаны на регулярные AJAX-обновления;
- проблема нагрузки вызвана не Heartbeat, а тяжёлыми запросами темы, плагинов или медленной базой данных.
В таких случаях лучше сначала проверить реальную причину тормозов. Heartbeat часто виден в мониторинге как «шумный» механизм, но не всегда он главный источник нагрузки.
Если нужен более мягкий способ очистить сайт от лишней служебной активности и стандартных избыточных функций WordPress, иногда удобнее использовать Clearfy Pro. Но и в этом случае стоит проверять, какие именно опции вы включаете: для Heartbeat важен не сам плагин, а конкретная настройка, которую он меняет.
Если коротко: на слабом хостинге Heartbeat API имеет смысл не просто «отключить», а сначала ограничить. Для большинства сайтов достаточно увеличить интервал запросов или убрать Heartbeat только там, где он не нужен. Полное отключение оставляйте для случаев, когда вы точно понимаете, какие функции WordPress и плагинов при этом не понадобятся.