Как управлять WordPress Heartbeat API

Опубликовано: 2023-01-31

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

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

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

Что такое WordPress Heartbeat API?

WordPress Heartbeat API — это интерфейс, встроенный в ядро ​​WordPress, который обеспечивает связь в реальном времени между сервером и панелью управления WordPress. Heartbeat API был впервые представлен в 2013 году с выпуском WordPress 3.6. Это обеспечило значительные улучшения в управлении контентом и других ключевых областях администрирования веб-сайта.

API сердцебиения WordPress

Почему API Heartbeat так важен?

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

Для правильной работы панель инструментов WordPress должна иметь возможность обмениваться данными с сервером для отправки и получения данных. Интерфейсы прикладного программирования (API), такие как WordPress Heartbeat API, позволяют получать обновления в режиме реального времени без перезагрузки всей страницы для отображения новой информации.

Чтобы обеспечить беспрепятственный пользовательский интерфейс, панель управления WordPress отправляет запросы на сервер за кулисами достаточно часто, чтобы устранить любые задержки обновления для пользователей WordPress, которые вошли в систему и работают на веб-сайте. API Heartbeat будет отправлять запросы на сервер и вызовы API каждые 15–120 секунд.

Три ключевые особенности WordPress Heartbeat API Powers

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

1. Автосохранение и ревизии

Автосохранение и ревизии — одна из ключевых функций, предоставляемых WordPress Heartbeat API. Всякий раз, когда пользователь работает в редакторе блоков, WordPress выполняет автосохранение контента каждые 60 секунд. Это гарантирует, что никакие изменения не останутся несохраненными. Отправляя запросы на сервер каждую минуту, WordPress Heartbeat API сохраняет рабочую копию записи или страницы в своей базе данных, которая будет храниться там до тех пор, пока не запустится новое автосохранение.

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

2. Блокировка контента

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

3. Уведомления на панели мониторинга в реальном времени

WordPress Heartbeat API обеспечивает отправку уведомлений в режиме реального времени, в том числе от плагинов. Надежность связи клиент-сервер, которую обеспечивает Heartbeat API, побудила тысячи разработчиков плагинов WordPress интегрировать его в свои приложения.

Интервал вызовов WordPress Heartbeat API по умолчанию в админке сайта составляет 15 секунд. Разработчики плагинов, желающие использовать функциональность API, могут настроить собственные интервалы обмена данными между клиентским приложением и сервером.

Как работает WordPress Heartbeat API?

WordPress Heartbeat API использует AJAX — асинхронный JavaScript и XML — для связи с сервером из панели администратора. Интерфейс прикладного программирования собирает данные и отправляет их через так называемое событие jQuery. Обработчик admin-ajax получает данные и обрабатывает их на стороне сервера, после чего подготавливает и возвращает ответ в формате JSON.

Когда панель управления WordPress загружается, код на стороне клиента устанавливает интервал, также известный как тик, который будет выполняться каждые 15–120 секунд, в зависимости от задачи. Код Heartbeat API предназначен для сбора данных на стороне клиента и передачи их на сервер для получения обновлений.

Общее количество вызовов Heartbeat API зависит от количества активных пользователей, одновременно работающих на сайте. Это то же самое, что и количество загруженных экземпляров панели инструментов WordPress. Когда область администрирования WordPress открыта в нескольких окнах браузера, создается такое же количество вызовов Heartbeat API, как если бы несколько пользователей вошли в серверную часть веб-сайта и выполняли задачи одновременно.

Зачем ограничивать вызовы WordPress Heartbeat API?

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

Каждый раз, когда API Heartbeat взаимодействует с сервером, выполняется HTTP-запрос POST к файлу admin-ajax.php в wp-admin. Поскольку вызовы Heartbeat API отправляются на сервер каждые 15-120 секунд, а число увеличивается, если есть более одного активного пользователя-администратора, API может перегружать сервер, что приводит к высокой загрузке ЦП и системной памяти.

Некоторые владельцы веб-сайтов WordPress могут даже принять активность Heartbeat API за продолжающуюся DDOS-атаку. Запросы WordPress Heartbeat API нельзя кэшировать, поэтому каждый вызов будет использовать определенное количество ресурсов сервера. Если сервер активно использует свои ресурсы для обработки вызовов API, ваши клиенты могут столкнуться с задержками в отображении контента при просмотре вашего веб-сайта.

Три вещи, которые следует учитывать перед отключением Heartbeat API

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

Прежде чем отключать Heartbeat API или ограничивать его активность, необходимо учитывать три ключевых момента:

  • Хостинг. Посмотрите, сколько процессорного времени и системной памяти выделено вашему сайту. Есть ли ограничение на количество процессов, которые может создать ваш сайт?
  • Время, потраченное на администрирование сайта. Сколько времени вы тратите на администрирование и публикацию контента? Сколько активных пользователей часто одновременно работают с панелью управления WordPress и внутренними интерфейсами?
  • Ежедневный трафик получен. Сколько ежедневных посетителей посещает ваш сайт WordPress? Используете ли вы какие-либо решения для кэширования, чтобы снизить нагрузку на сервер?

В зависимости от типа веб-сайта и текущей настройки хостинга ограничение количества вызовов WordPress Heartbeat API будет по-разному влиять на общую производительность. Если вы используете ресурсоемкий сайт WordPress с несколькими пользователями, регулярно выполняющими техническое обслуживание и публикующими контент, сокращение количества вызовов API Heartbeat может быть очень полезным. Это также может помочь вам избежать увеличения затрат на хостинг в попытке справиться с растущим объемом трафика.

Как управлять WordPress Heartbeat API с помощью плагина

Самый простой способ управлять запросами WordPress Heartbeat API — использовать плагин WordPress, предназначенный для этого. Есть несколько различных решений, которыми вы можете воспользоваться. Heartbeat Control, разработанный WP Rocket, является одним из лучших и самых популярных.

Контроль сердцебиения

Установите и активируйте плагин Heartbeat Control с панели управления WordPress. Перейдите в « Настройки» > «Контроль сердцебиения », чтобы открыть конфигурацию плагина. Heartbeat Control позволяет вам управлять активностью Heartbeat API во внешнем интерфейсе веб-сайта, на панели управления WordPress и в редакторе блоков, используя следующие параметры:

  • Разрешить пульс. Если эта опция включена, подключаемый модуль не будет каким-либо образом ограничивать вызовы Heartbeat API.
  • Отключить сердцебиение. Отключение Heartbeat заблокирует все вызовы API в выбранных областях вашего сайта WordPress.
  • Изменить сердцебиение. Вы можете установить собственный интервал для вызовов WordPress Heartbeat API в диапазоне от 15 до 300 секунд.
Контроль сердцебиения

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

Обратите внимание, что ограничение активности Heartbeat API в редакторе блоков может потребовать более частого сохранения изменений, чтобы не потерять любые изменения в редактируемом контенте. Если вы не полагаетесь на автосохранение и вам не нужна блокировка контента, вы можете вообще отключить WordPress Heartbeat API в Гутенберге.

Как ограничить вызовы WordPress Heartbeat API без плагина

Вы можете ограничить вызовы WordPress Heartbeat API без плагина, используя хуки WordPress. Добавление нескольких строк кода в файл functions.php активной темы вашего веб-сайта может помочь вам отключить Heartbeat API или указать собственный интервал для вызовов API.

WordPress поставляется со встроенным редактором тем, который позволяет вам изменять functions.php из панели администратора. Однако большинство подключаемых модулей безопасности WordPress, таких как iThemes Security Pro, отключают эту функцию, чтобы защитить ваш веб-сайт в случае его взлома.

Вы можете редактировать файл, используя интерфейс файлового менеджера, предоставляемый панелью управления хостингом, или подключившись к файлам вашего сайта через FTP или SSH. Если Kadence WP является вашей предпочтительной блочной темой WordPress, вы можете найти файл functions.php в папке Kadence внутри вашего каталога содержимого WordPress.

Обратите внимание, что любой код, добавленный в файл functions.php, скорее всего, будет перезаписан следующим обновлением темы. Поэтому может быть лучше управлять WordPress Heartbeat API с помощью плагина. Если вы используете дочернюю тему, вы можете изменить ее файл functions.php без риска его перезаписи при обновлении родительской темы.

Не забудьте сначала сохранить резервную копию вашего сайта WordPress

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

Использование плагина резервного копирования WordPress поможет вам создать надежную стратегию резервного копирования. У вас будет рабочая копия вашего сайта, когда вам это нужно. Храните резервные копии вашего веб-сайта в удаленном месте, используйте настраиваемые расписания резервного копирования и восстановление одним щелчком мыши с помощью BackupBuddy.

Отключить API сердцебиения

Добавление приведенного ниже действия позволяет остановить API Heartbeat, фактически отключив все вызовы API. Для этого добавьте приведенный ниже фрагмент кода в конец functions.php.

function wb_stop_heartbeat() {
 wp_deregister_script('heartbeat');
}
add_action('init', 'wb_stop_heartbeat', 1);

Таким же образом вы можете отключить определенную функцию в WordPress Heartbeat API.

function disable_autosave() {
 wp_deregister_script('autosave');
}
add_action('admin_init', 'disable_autosave');

Настройка пользовательского интервала для вызовов API Heartbeat

Чтобы ограничить вызовы WordPress Heartbeat API, вы можете указать фильтр, который будет настраивать пользовательский интервал для запросов API. Следующий фрагмент кода ограничивает вызовы Heartbeat API одним запросом в минуту.

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

Настройка пользовательского интервала для автосохранения WordPress

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

define('AUTOSAVE_INTERVAL', 300);

Вы можете назначить интервалу большее значение, например 3600, что составляет час, чтобы полностью отключить автосохранение WordPress. Константы WordPress, настроенные в wp-config.php, не изменяются ни при каких обновлениях WordPress. Вам не придется переопределять их позже.

Подведение итогов

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

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

Надежная производительность веб-сайта жизненно важна, но не менее важна и безопасность. iThemes поможет защитить все области вашего веб-сайта WordPress, поэтому ваш бизнес останется в сети, несмотря ни на что. Узнайте, как вы можете защитить свое присутствие в Интернете, включая многофакторную аутентификацию, мониторинг изменений файлов и сканирование уязвимостей, с помощью iThemes Security Pro.