WordPress Heartbeat API
WordPress Heartbeat API представляет собой функцию, которая обеспечивает связь между браузером и сервером, позволяя выполнять периодические автоматические задачи.
Вот несколько ключевых моментов и примеров, чтобы понять его подробнее:
Основная концепция
- Что такое Heartbeat API?
- Это как пульс, который работает в фоновом режиме и помогает обновлять информацию в реальном времени.
- Он используется для того, чтобы информация на вашем сайте всегда была актуальной, даже если вы не обновляете страницу.
- Как он работает?
- Heartbeat API отправляет AJAX-запросы к серверу через определенные интервалы времени.
- Эти запросы обновляют определенные данные и функциональность WordPress.
Примеры использования
- Автосохранение и блокировка записей:
- Когда вы редактируете запись, Heartbeat API помогает автоматически сохранять вашу работу.
- Он также предупреждает других пользователей, что данная запись уже редактируется, чтобы избежать конфликтов редактирования.
- Уведомления в админ-панели:
- Если вы находитесь в админ-панели WordPress, Heartbeat может показывать уведомления в реальном времени, например, о новых комментариях или обновлениях.
- Синхронизация сессий:
- Если вы вошли в несколько вкладок WordPress, пульс помогает синхронизировать их, чтобы изменения, сделанные в одной вкладке, отображались в других.
Влияние на производительность
- Heartbeat может оказывать значительное влияние на производительность сервера, особенно на больших или плохо оптимизированных сайтах.
- Периодические запросы к серверу могут нагружать его, что иногда приводит к замедлению работы сайта.
Управление и оптимизация
- Вы можете управлять частотой и поведением пульса с помощью различных плагинов или кастомного кода.
- Например, вы можете ограничить частоту запросов или отключить вовсе для определенных частей сайта, чтобы оптимизировать производительность.
Изменение интервала Heartbeat
Этот пример устанавливает интервал в 15 секунд:
add_filter( 'heartbeat_settings', 'custom_heartbeat_settings' );
function custom_heartbeat_settings( $settings ) {
$settings['interval'] = 15; // В секундах
return $settings;
}
Отправка данных на сервер с помощью Heartbeat
Чтобы отправить данные на сервер при каждом тике Heartbeat, используйте хук heartbeat_send.
add_filter( 'heartbeat_send', 'send_custom_data_to_heartbeat', 10, 2 );
function send_custom_data_to_heartbeat( $response, $data ) {
if ( isset( $data['custom_data'] ) ) {
// Обработка custom_data, отправленного из браузера
$response['custom_data_response'] = 'Ответ на custom_data';
}
return $response;
}
В JavaScript вы можете отправить custom_data таким образом:
jQuery(document).on('heartbeat-send', function(e, data) {
data.custom_data = 'Значение';
});
Получение данных с сервера
Также можно получать данные с сервера при каждом тике.
Это может быть использовано, например, для отображения уведомлений в реальном времени.
add_filter( 'heartbeat_received', 'receive_custom_data_from_heartbeat', 10, 2 );
function receive_custom_data_from_heartbeat( $response, $data ) {
if ( isset( $data['get_custom_data'] ) ) {
// Отправка данных обратно в браузер
$response['custom_data_received'] = 'Некоторые данные с сервера';
}
return $response;
}
В JavaScript для получения этой информации:
jQuery(document).on('heartbeat-tick', function(e, data) {
if (data.custom_data_received) {
console.log('Получены данные с сервера: ' + data.custom_data_received);
}
});