X

Heartbeat API de WordPress, aprende a configurarla

Si te interesa los temas de optimización posiblemente en algún momento tengas que configurar la funcionalidad de Heartbeat de WordPress, ya que debido a su comportamiento repetitivo puede en algunos casos llegar a demandar recursos extra del servidor.

 

¿Qué es la API de Heartbeat?

La API de Heartbeat es una funcionalidad introducida en la versión 3.6 de WordPress, Heartbeat o traducido como “latido de corazón”, se ejecuta repetitivamente en un lapso de tiempo, similar a un latido, enviando peticiones y esperando una respuesta del servidor.

 

¿Para qué usa WordPress esta API?

WordPress la usa para tareas repetitivas de monitoreo, en donde se tiene que estar pendientes de cambios en el servidor para informar al navegador del usuario.

A continuación se muestran algunas de estas tareas:

  • Auto guardado de entradas y páginas u otro tipo de contenido.
  • Notificaciones en la administración de WordPress
  • Bloqueo de contenido que esta siendo trabajado por otro usuario
  • Mantener datos estadísticos actualizados en paneles de control de algunos plugins.
Al ser una API puede ser usada igualmente por otros plugins o por código personalizado en tu theme.

 

¿Cómo funciona Heartbeat?

Técnicamente son llamadas al servidor usando Ajax, cada cierto periodo de tiempo, es decir en algún lugar de la API se hace uso de la función setinterval() de Javascript.

Puesto que son llamadas Ajax puedes monitorear el archivo admin-ajax.php para ver las peticiones que se hacen a este archivo.

En la siguiente imagen vemos la cantidad de llamadas que se han generado al hacer uso de esta API de Heartbeat.

 

Limitando la funcionalidad de Heartbeat

No recomiendo deshabilitar totalmente esta funcionalidad ya que es útil en muchos casos, sin embargo puedes extender el intervalo de las peticiones o incluso limitarlas a ciertas áreas de tu sitio web.

Ten en cuenta que existe el plugin Heartbeat Control con el que puedes realizar configuraciones básicas de limitación del heartbeat, sin embargo en este artículo usaremos directamente código.

– Extender el período de ejecución de heartbeat

La primera opción es cambiar el tiempo de ejecución, puedes cambiar la cantidad a partir de 15 segundos, por ejemplo con el siguiente código:

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

En el código anterior hemos usado un Hook de filtro heartbeat_settings, hemos cambiado el intervalo para todas las ejecuciones de Heartbeat a 60 segundos, sin embargo es posible también hacer este cambio agregando condicionales.

 

Cargando Heartbeat sólo en determinadas secciones del sitio

El Heartbeat inicia a través de la ejecución de javascript, por lo tanto bastaría con sólo desregistrar la carga del archivo Javascript Heartbeat

add_action("admin_enqueue_scripts", “dcms_carga_heartbeat");
function dcms_carga_heartbeat(){
	$screen = get_current_screen();
	if ( $screen->post_type != 'post' ) {
    	wp_deregister_script( 'heartbeat' );
	}
}

En el código anterior sólo mantendremos el registro del archivo javascript de Heartbeat en las páginas que carguen las entradas, en cualquier otro caso desregistramos la carga del script.

 

Conclusión

Como has podido comprobar, existe la funcionalidad de Heartbeat en WordPress que esta continuamente realizando solicitudes al servidor, si en algún momento llegas a tener una sobrecarga, tal como hemos visto, puedes limitar el uso de esta funcionalidad a través de código.

 

Categorías: Core
Etiquetas: optimización