Как ускорить WordPress за счёт отключения Heartbeat API

Если в админке WordPress сервер заметно нагружается без видимой причины, а в логах или мониторинге часто всплывают AJAX-запросы к admin-ajax.php, один из первых кандидатов на проверку — Heartbeat API. Это встроенный механизм WordPress, который регулярно отправляет запросы с открытых вкладок админки и редактора. Он нужен для автосохранения, уведомлений о блокировках записи и части интерактивных функций, но на нагруженных сайтах может создавать лишний фоновой трафик.

Полностью отключать Heartbeat API обычно не стоит: тогда вы потеряете автосохранение и часть поведения редактора. На практике чаще всего достаточно ограничить частоту запросов в админке и совсем убрать их на фронтенде, если там они не нужны. Это даёт заметное снижение нагрузки без потери базовой функциональности.

Что именно делает Heartbeat API и почему он нагружает сайт

Heartbeat API работает через периодические AJAX-запросы. По умолчанию WordPress сам решает, когда отправлять их из открытой страницы админки или редактора. Через эти запросы передаются данные для автосохранения, проверки, не редактирует ли кто-то ту же запись, обновления некоторых интерфейсных элементов и похожих задач.

Проблема возникает не из-за одного запроса, а из-за их постоянства. Если у вас несколько редакторов, много одновременно открытых вкладок или слабый хостинг, число запросов быстро растёт. На shared-хостинге это особенно заметно: PHP-процессы заняты короткими, но частыми обращениями, хотя пользователь ничего не делает.

Важно понимать разницу между отключением и ограничением. Полное отключение убирает и полезные функции. Ограничение частоты позволяет оставить автосохранение и часть интерактивности, но уменьшить количество обращений к серверу.

Когда Heartbeat API лучше ограничить, а не выключать

Ограничение — более безопасный вариант почти для всех обычных сайтов. Его стоит выбрать, если:

  • в админке много открытых вкладок у редакторов;
  • сайт работает на недорогом хостинге и чувствителен к частым AJAX-запросам;
  • в панели управления регулярно наблюдаются пики нагрузки без роста трафика;
  • вам нужны автосохранение и защита от одновременного редактирования записей.

Полное отключение имеет смысл только в узких сценариях: например, если сайт используется как статичный проект, а редактирование происходит редко и вы готовы отказаться от части удобств редактора. Для большинства рабочих сайтов это лишний риск.

Как ограничить Heartbeat API через код

Самый надёжный способ — добавить небольшой фрагмент в functions.php дочерней темы или в собственный мини-плагин. Если вы правите тему, делайте это только в дочерней теме: иначе изменения пропадут после обновления.

Этот код увеличивает интервал Heartbeat до 60 секунд в админке и полностью отключает его на фронтенде. Для большинства сайтов этого достаточно, чтобы снизить число запросов без заметной потери удобства.

add_filter( 'heartbeat_settings', function( $settings ) {
	$settings['interval'] = 60;
	return $settings;
} );

add_action( 'init', function() {
	if ( ! is_admin() ) {
		wp_deregister_script( 'heartbeat' );
	}
} );

Здесь есть важная оговорка: полная деактивация скрипта на фронтенде не всегда нужна. Если у вас на сайте есть фронтенд-редактор, формы с автосохранением или другой функционал, завязанный на Heartbeat, такой вариант может его сломать. В этом случае лучше ограничиться только увеличением интервала в админке и не отключать скрипт глобально.

Если вам нужно именно уменьшить частоту, а не отключать скрипт, достаточно оставить только фильтр heartbeat_settings. Это самый мягкий вариант, и с него обычно стоит начинать.

Как отключить Heartbeat API точечно, а не на всём сайте

WordPress позволяет управлять Heartbeat не только глобально, но и по контексту. Это полезно, если вы хотите сохранить его в редакторе записей, но убрать в других разделах админки.

Например, можно оставить Heartbeat только на страницах редактирования записей, а в остальных разделах админки отключить:

add_action( 'admin_enqueue_scripts', function( $hook ) {
	if ( 'post.php' !== $hook && 'post-new.php' !== $hook ) {
		wp_deregister_script( 'heartbeat' );
	}
} );

Такой подход удобен, если редакторы работают в основном с записями и страницами, а в других разделах админки Heartbeat не даёт пользы. Но здесь нужно учитывать, что некоторые плагины тоже используют этот механизм. После отключения проверьте, не пропали ли у них уведомления, блокировки редактирования или другие элементы интерфейса.

Как проверить, что нагрузка действительно снизилась

После изменения настроек не стоит ориентироваться только на ощущение, что сайт «стал быстрее». Лучше проверить конкретно:

  • откройте админку и посмотрите в DevTools браузера вкладку Network — количество запросов к admin-ajax.php должно уменьшиться;
  • если у вас есть серверный мониторинг, сравните число PHP-запросов и загрузку CPU до и после изменения;
  • проверьте редактор записи: автосохранение должно работать, а при одновременном редактировании WordPress должен показывать предупреждение о блокировке;
  • посмотрите, не появились ли ошибки у плагинов, которые завязаны на Heartbeat.

Если вы отключили Heartbeat на фронтенде, а на сайте есть формы или интерактивные элементы, протестируйте их отдельно. Иногда проблема проявляется не сразу, а только в конкретном сценарии: например, при редактировании профиля, отправке формы или работе с нестандартным фронтенд-кабинетом.

Что чаще всего ломают при отключении Heartbeat API

Самая частая ошибка — отключить Heartbeat целиком, а потом удивляться, что в редакторе перестало нормально работать автосохранение или исчезло предупреждение о занятой записи. Это не баг WordPress, а ожидаемое последствие полного отключения механизма.

Ещё одна типичная проблема — правка functions.php в родительской теме. После обновления темы код исчезнет, и вы снова получите прежнюю нагрузку. Если не хотите писать мини-плагин, используйте дочернюю тему.

Третья ошибка — отключать Heartbeat, не проверив плагины. Некоторые расширения используют его для внутренних уведомлений, статусов или синхронизации. Если после изменений что-то перестало обновляться в админке, верните настройки назад и ограничьте только интервал, а не сам механизм.

Какой вариант выбрать на практике

Если нужен безопасный и универсальный вариант, начните с увеличения интервала Heartbeat до 60 секунд. Это снижает частоту AJAX-запросов и обычно не мешает работе редактора. Если нагрузка всё ещё заметна, можно дополнительно отключить Heartbeat на фронтенде, но только после проверки, что там нет зависимого функционала.

Полное отключение имеет смысл редко. Для обычного WordPress-сайта лучше сохранить Heartbeat в админке хотя бы в урезанном виде: так вы уменьшите нагрузку и не потеряете базовые функции, ради которых этот механизм и встроен в ядро.

Как исправить дубли H1, title и meta description в WordPress
19.10.2026
Как установить автоматический редирект после изменения слага в WordPress
03.10.2026
Оптимизация WordPress для мобильных устройств: практические советы и примеры
13.09.2026
Как создать автоматический импорт пользователей в WordPress из CSV
01.10.2026
Как отключить архивы дат в WordPress
13.10.2026