944 063 154

El corazón de WordPress, ¿qué es y cómo funciona API Heartbeat?

Publicado enDesarrollo y Programación en septiembre 1, 2021 10:00 am

Como hemos comentado en otras ocasiones, para poder optimizar WordPress es necesario conocer a la perfección cómo funciona. Solo de esta forma podemos realizar los ajustes necesarios para que se consuman los recursos necesarios. En este punto, la API Heartbeat es uno de esos elementos que debemos conocer.

¿Qué es la API Heartbeat?

Es la API de WordPress que permite a la aplicación comunicarse con el navegador del usuario y que lleva disponible desde la versión 3.6. Esta funcionalidad permite que, de forma predeterminada, WordPress se beneficie de algunas de las ventajas de la tecnología AJAX; como por ejemplo el autoguardado o la configuración y uso de los widgets sin que el usuario tenga que recargar la página para aplicar el cambio. La combinación de la API Heartbeat con admin-ajax.php también es fundamental para algunos de los plugins más importantes de WordPress como WooCommerce.

A pesar de todas las ventajas que aporta, la API Heartbeat de WordPress tiene un gran problema: consume demasiada CPU y RAM. Además, las peticiones a admin-ajax son demasiado largas porque mientras el servidor procesa la solicitud se quedan paradas.

¿Cómo funciona?

El funcionamiento de la API Heartbeat es demasiado simple, tanto que es el motivo por el que el sistema consumo un elevado número de recursos. Podríamos decir que la API Heartbeat es el corazón de WordPress, un elemento que funciona por “pulsaciones”, por peticiones enviadas al admin-ajax cada 15 segundos. Aunque visto así pueda parecer que el problema no es tal, lo cierto es que generalmente son varios usuarios los que realizan peticiones y varios los plugins que envían información a la API Heartbeat de forma continua. Lo que hace que se estén realizando múltiples peticiones cada 15 segundos, es decir, de forma continua. A lo que habría que sumar el número de visitas de la web que, en el caso de la una web con bastante tráfico, podrían provocar la saturación del servidor.

De ahí que a la hora de escoger un servidor cloud o un alojamiento de cualquier otro tipo haya que tener muy en cuenta la configuración de la aplicación y también las visitas que habitualmente suele tener. Un elevado número de visitas unidas a una incorrecta configuración de WordPress podrían hacer que el servidor ni siquiera sea capaz de arrancar.

¿Cómo optimizar el admin-ajax?

Al igual que sucede con la API Heartbeat, para poder reducir el consumo de recursos del admin-ajax primero necesitaremos saber cómo funciona y cuál es su relación con la API. A partir de ahí, podemos recurrir a plugins para modificar los tiempos en los que tienen que realizarse las peticiones. Cuanto mayor sea el periodo que establezcamos, más podremos reducir el consumo de recursos. Para ello, podemos recurrir a:

  • Heartbeat Control. Es el plugin más utilizado para controlar la API Heartbeat y controlar el consumo de admin-ajax. También es posible desactivar ambos elementos, pero eso supondría que algunas funcionalidades dejen de estar operativas y algunos plugins se vean afectados.
  • AJAX Heartbeat Tool. Es similar a Heartbeat Control, solo que con el añadido de que permite escoger en qué partes de WordPress se continuarán realizando peticiones al admin-ajax.

Si lo prefieres, también puedes desactivar la API Heartbeat editando directamente el código fuente de la aplicación, aunque no es lo más recomendable. En la misma línea, a pesar de que sea posible, la opción de desactivar la API Heartbeat no es la más recomendable, ya que con ello dejarían de funcionar algunas opciones del propio WordPress y de algunos de los plugins instalados.

En su momento, el lanzamiento de la API Heartbeat fue un gran avance para WordPress, pero lo cierto es que con ello se han incrementado las necesidades mínimas de cualquier WordPress. Tanto que actualmente una instalación WordPress requiere de casi el doble de recursos que hace unos años, entre otras cosas por la “especial” configuración de su API.