La API Heartbeat de WordPress actúa como el pulso de tu sitio web: envía un pequeño ping de "Estoy activo" desde tu navegador a tu servidor cada pocos segundos. Este ciclo automático de solicitud/respuesta sincroniza los datos, las publicaciones y el panel de control de tu sitio, proporcionando actualizaciones en tiempo real y funciones cruciales para editores, plugins y administradores.
En este artículo del glosario, aprenderá exactamente cómo funciona la API Heartbeat de WordPress, por qué es importante y cómo monitorearla, controlarla o deshabilitarla si genera una alta demanda de CPU en su alojamiento.
¿Por qué es importante la API Heartbeat de WordPress?
La API Heartbeat sustenta muchas de las funciones más intuitivas de WordPress, manteniendo la comunicación constante entre el navegador y el servidor. Sin ella, se perderían las prácticas funciones de guardado automático, los bloqueos colaborativos de entradas y las actualizaciones en tiempo real del panel de control.
- Protege tu editor de entradas: Al redactar o editar una entrada en el editor de WordPress, Heartbeat guarda automáticamente los cambios cada 15-60 segundos, para que nunca pierdas tu trabajo si tu navegador o conexión fallan.
- Bloqueo de usuarios y notificaciones: Si dos autores intentan editar la misma publicación simultáneamente, Heartbeat envía notificaciones ("Un miembro de tu equipo está editando esta publicación") y aplica un mecanismo de bloqueo para evitar conflictos de contenido.
- Widgets de panel en tiempo real: los complementos de comercio electrónico como WooCommerce utilizan la API para actualizar los datos de ventas en su panel sin recargar toda la página.
- Alertas de tiempo de espera de sesión: Heartbeat puede alertarlo si su sesión de inicio de sesión ha expirado, solicitándole que inicie sesión nuevamente antes de perder las ediciones no guardadas.
Cómo funciona la API Heartbeat: conceptos básicos
Heartbeat funciona mediante pequeñas llamadas AJAX a tu servidor, lo que permite a WordPress coordinar datos sin necesidad de actualizar la página por completo. Estos pings frecuentes optimizan la funcionalidad y la seguridad , garantizando que los editores vean información actualizada y que las sesiones sigan siendo válidas.
- El navegador envía admin-ajax.php Pedido: Con cada tic del latido del corazón, su navegador envía una pequeña llamada AJAX a /wp-admin/admin-ajax.php.
- Solicitud de procesos del servidor: WordPress ejecuta cualquier función enlazada, recupera datos nuevos y luego los envía como una respuesta JSON.
- El navegador recibe y actúa: Los eventos JavaScript de su navegador capturan la respuesta, actualizan la interfaz de usuario (por ejemplo, guardado automático, actualización de widgets) y se preparan para el siguiente intervalo.
js
// Ejemplo: Escuchar el siguiente pulso de latido en el frontend
jQuery(document).on('heartbeat-tick', function(event, data) {
console.log('Respuesta de latido recibida:', data);
});
- Intervalo predeterminado: Pantalla del editor (15 segundos) y Panel de control y otras páginas de administración (60 segundos).
Ganchos principales y ejemplos de código
Los desarrolladores aprovechan los ganchos integrados de Heartbeat para añadir funciones personalizadas o ajustar su comportamiento. Puedes adaptar la API para que intercambie los datos necesarios aprovechando estos eventos de JavaScript y PHP.
Ganchos de JavaScript
A continuación se muestran dos ganchos JS principales que puedes vincular para el control del frontend:
- enviar latidos: Adjunte datos personalizados antes de cada solicitud.
- tictac del latido del corazón: Actuar sobre los datos recibidos una vez completada la solicitud.
js
// Adjuntar información adicional en cada evento heartbeat-send
jQuery(document).on('heartbeat-send', function(e, data) {
data.customValue = jQuery('#my-field').val();
});
Ganchos PHP
En el lado del servidor, estos ganchos le permiten modificar o reaccionar a las llamadas Heartbeat:
- latido_enviar: Modificar los datos que devuelve el servidor.
- latido recibido: Tome acción cuando el servidor reciba un tick.
php
add_filter('heartbeat_send', 'my_heartbeat_send', 10, 2);
function my_heartbeat_send($response, $screen_id) {
if ($screen_id === 'post') {
$response['server_time'] = time();
}
return $response;
}
Casos de uso comunes de la API Heartbeat de WordPress
Las capacidades en tiempo real de Heartbeat impulsan muchas funciones cotidianas de WordPress. La sincronización del servidor y el navegador garantiza que los paneles y editores se mantengan actualizados sin necesidad de clics manuales ni recargas completas.
- Guardado automático y revisiones: Heartbeat se ejecuta sin problemas en el editor de publicaciones, creando copias de seguridad cada 15 segundos para que puedas recuperar el contenido perdido.
- Datos de ventas en tiempo real: los desarrolladores de complementos de comercio electrónico utilizan Heartbeat para obtener estadísticas de ventas nuevas y mostrarlas instantáneamente.
- Avisos de caducidad de la sesión: Cuando su sesión de inicio de sesión esté próxima a caducar, Heartbeat mostrará un aviso: "Haga clic aquí para permanecer conectado".
- Alertas de colaboración: Podrás ver quién edita qué publicación en sitios con varios autores, evitando así conflictos de sobrescritura.
Consideraciones de rendimiento y uso elevado de la CPU
Si bien es indispensable para las actualizaciones en tiempo real, Heartbeat puede consumir mucha CPU en sitios web con mucha actividad. Cada solicitud AJAX frecuente a admin-ajax.php consume tiempo de procesamiento y memoria, lo que puede sobrecargar las cuentas de alojamiento compartido.
- Carga elevada de la CPU: Las llamadas frecuentes a la API Heartbeat pueden aumentar significativamente el uso de la CPU de su servidor, especialmente en planes de alojamiento compartido, porque cada ciclo requiere que PHP procese una solicitud AJAX
- Respuesta de página más lenta: a medida que el servidor procesa más estas solicitudes, las cargas de las páginas del frontend y las interacciones con el panel de administración pueden volverse notablemente más lentas.
- Riesgo de suspensión: Si el volumen de admin-ajax.php Si las solicitudes llevan su sitio más allá de los límites de CPU de su host, su cuenta podría verse limitada o suspendida hasta que el uso regrese a niveles aceptables.
¿Cómo monitorear el tráfico de Heartbeat?
Observar la actividad del latido puede ayudarle a diagnosticar cuellos de botella de rendimiento de forma temprana. Utilice los registros del servidor y las herramientas del cliente para monitorizar la frecuencia de las solicitudes y los tiempos de respuesta.
- Registros y estadísticas del servidor: Verifique los picos de uso de CPU en cPanel o en el panel de control de su hosting, centrándose en Entradas de /wp-admin/admin-ajax.php.
- Herramientas para desarrolladores del navegador: En Chrome o Firefox, vaya a Herramientas para desarrolladores → pestaña Red → filtre “admin-ajax.php” → observe la frecuencia de actualización y el tiempo de respuesta.
- Soluciones de complementos: instale complementos de rendimiento (por ejemplo, Query Monitor) para ver las llamadas Heartbeat, el uso de memoria y el tiempo de ejecución directamente en el panel de administración.
Controlar y limitar la API Heartbeat
Si el ritmo predeterminado de Heartbeat satura tu servidor, puedes ralentizarlo o desactivarlo selectivamente. Esto te permite equilibrar las funciones en tiempo real con un rendimiento óptimo y control de recursos.
- Mediante plugin: instale Heartbeat Control o utilice la configuración integrada de WP Rocket para ajustar los intervalos o desactivar Heartbeat en pantallas específicas
- Vía Código
php
// Reducir la frecuencia de latidos a una vez cada 60 segundos
add_filter('heartbeat_settings', function($settings) {
$settings['interval'] = 60;
return $settings;
});
// Deshabilitar completamente en el frontend
add_action('init', function() {
if (!is_admin()) wp_deregister_script('heartbeat');
}, 1);
Riesgos de deshabilitar la API Heartbeat
Desactivar Heartbeat puede aliviar la carga de la CPU, pero implica la pérdida de varias funciones clave. Antes de desactivarlo en todo el sitio, comprenda las desventajas en la experiencia del usuario y la seguridad.
- No se permiten guardados automáticos en el editor clásico → es necesario hacer clic manualmente en “Guardar borrador” para cada cambio.
- Posible pérdida de datos si la conexión a Internet se cae durante la publicación/actualización.
- Los widgets y complementos del panel que dependen de Heartbeat dejarán de funcionar, lo que reducirá los informes y las funciones en tiempo real.
Mejores prácticas y solución de problemas
En lugar de eliminar el Heartbeat por completo, es más sensato ajustar su comportamiento. Al limitarlo o registrarlo selectivamente, se conservan sus beneficios y se mantiene la salud del servidor.
- Acelerar, no matar: en lugar de desactivarlo por completo, aumente el intervalo de 15 a 30 o 60 segundos.
- Prueba en ensayo: primero, aplique cambios de intervalo o anulación de registro en un entorno de ensayo para detectar problemas.
- Combinar con almacenamiento en caché: aproveche el almacenamiento en caché de objetos o páginas para compensar cualquier carga adicional del servidor de Heartbeat.
- Habilitar registro:Engancharse a latido recibido para registrar ticks y depurar comportamientos inesperados.
Pensamiento final
La API Heartbeat de WordPress mantiene tu sitio web activo y sincronizado. Guarda borradores automáticamente, muestra datos en tiempo real y evita conflictos de edición. Demasiadas solicitudes pueden aumentar el consumo de CPU. Puedes ralentizarla o desactivarla cuando sea necesario. Prueba primero los cambios en un sitio de prueba. Con el equilibrio adecuado, Heartbeat mejora la funcionalidad sin afectar el rendimiento.
Para conocer más términos de WordPress y explicaciones detalladas, explora el Glosario de Seahawk Media.