Qué es el Heartbeat de WordPress y admin-ajax.php y cómo optimizarlos

Tabla de contenidos

¡Hola, hola querido lector! ¿Te suena el archivo admin-ajax.php o la famosa API Heartbeat de WordPress? ¿O directamente no tienes ni idea?

No te preocupes. Si tu página web consume demasiados recursos, tu hosting te avisa de picos de CPU o el panel de WordPress va lento, es muy probable que el Heartbeat y las peticiones AJAX tengan parte de la culpa.

En este post te explico de forma sencilla qué son, cuándo dan problemas, cómo detectarlos y cómo optimizarlos sin romper nada. ¡Vamos con ello!

Resumen rápido

  • admin-ajax.php es el archivo de WordPress que gestiona las peticiones AJAX, tanto del panel como de la parte pública.
  • La API Heartbeat envía «latidos» periódicos al servidor a través de admin-ajax.php para el autoguardado, el bloqueo de entradas y las sesiones.
  • Con varias pestañas abiertas del panel o plugins que abusan de AJAX, puede disparar el consumo de CPU, sobre todo en hostings compartidos.
  • Lo recomendable es reducir su frecuencia en el editor y desactivarlo donde no se necesita, con un plugin como Heartbeat Control, WP Rocket o Perfmatters, o con código.

¿Qué es admin-ajax.php en WordPress?

admin-ajax.php es un archivo del núcleo de WordPress, ubicado en la carpeta /wp-admin/, que se encarga de procesar las peticiones AJAX que se hacen desde el panel de administración y desde la parte pública de la página web.

AJAX es la tecnología que permite actualizar parte de una página sin recargarla entera. Por eso, cuando apruebas un comentario, guardas un borrador o filtras productos en una tienda online, todo parece ocurrir «en vivo».

Entonces, ¿por qué da problemas si es tan útil? Porque cada petición a admin-ajax.php carga WordPress en el servidor y no se puede cachear. Si hay muchas y muy seguidas, el servidor se satura.

Servicio de Diseño web WordPress

Diseño tu página web en WordPress rápida y optimizada para SEO. Tu web pensada para convertir visitas en clientes

¿Qué es la API Heartbeat de WordPress y cómo funciona?

La API Heartbeat es un sistema de WordPress, disponible desde la versión 3.6, que mantiene una comunicación periódica entre tu navegador y el servidor mediante peticiones a admin-ajax.php.

Esos «latidos» sirven para:

  • Autoguardar el contenido mientras escribes en el editor clásico.
  • Bloquear una entrada cuando otro usuario la está editando (el aviso «Otro usuario está editando esta entrada»).
  • Avisarte si tu sesión ha caducado para que vuelvas a iniciarla sin perder cambios.
  • Mostrar notificaciones en tiempo real de algunos plugins.

Por defecto, el Heartbeat envía un latido cada 15 segundos mientras editas una entrada y cada 60 segundos en el resto del panel. Cuando la pestaña queda inactiva, reduce la frecuencia.

PD. El editor de bloques (Gutenberg) realiza el autoguardado a través de la REST API, pero sigue utilizando el Heartbeat para el bloqueo de entradas y el control de la sesión. Por eso no conviene desactivarlo por completo en el editor.

¿Qué problemas provocan el Heartbeat y admin-ajax.php?

El problema no es el Heartbeat en sí, sino la acumulación de peticiones: varias pestañas del panel abiertas, varios usuarios editando a la vez o plugins que utilizan AJAX de forma intensiva.

Consumo excesivo de CPU y RAM

Cada petición a admin-ajax.php consume CPU y memoria RAM del servidor. Si tienes cinco pestañas del editor abiertas, cada una lanza un latido cada 15 segundos. Súmale plugins de estadísticas en tiempo real, chats o formularios, y el número de peticiones se dispara.

En hostings compartidos, esto puede provocar avisos por consumo de recursos, errores 503 o 508, o incluso la suspensión temporal de la cuenta.

Lentitud en la página web

Aunque el Heartbeat trabaja sobre todo en el panel, un servidor saturado responde más lento a todas las peticiones, incluidas las de tus visitantes. Eso empeora tu TTFB y la experiencia de usuario.

Además, algunos plugins cargan AJAX también en la parte pública, lo que añade peticiones sin caché en cada visita.

Panel de administración lento

Si el servidor está saturado, el editor de entradas o productos tarda en cargar, los cambios dan «time-out» y trabajar en WordPress se vuelve desesperante, sobre todo en tiendas online WooCommerce con varios gestores.

Servicio de Diseño web WordPress

Diseño tu página web en WordPress rápida y optimizada para SEO. Tu web pensada para convertir visitas en clientes

¿Cómo saber si el Heartbeat está causando problemas?

Para saber si el Heartbeat o admin-ajax.php están sobrecargando tu servidor, revisa el consumo de recursos y las peticiones que se hacen. Estas son las formas más útiles:

  1. Revisa las estadísticas de tu hosting. Si ves picos de CPU coincidiendo con horas en las que se trabaja en el panel, es una pista clara.
  2. Consulta los registros de acceso del servidor. Si aparecen miles de peticiones POST a admin-ajax.php, algo está abusando de AJAX.
  3. Utiliza las herramientas de desarrollador de Chrome. Abre el panel de WordPress, pulsa F12, ve a la pestaña Red y filtra por admin-ajax. Verás cada latido y cuánto tarda.
  4. Instala Query Monitor para ver qué acciones AJAX se ejecutan, qué plugin las lanza y cuánto tardan.
  5. Desactiva temporalmente los plugins sospechosos (estadísticas en tiempo real, chats, notificaciones) y comprueba si el consumo baja.

Cómo optimizar el Heartbeat de WordPress

Lo recomendable es reducir la frecuencia del Heartbeat en el editor y desactivarlo en el escritorio y en la parte pública, donde normalmente no aporta nada. Tienes dos formas de hacerlo.

Zona de WordPress Configuración recomendada Por qué
Editor de entradas y productos Reducir a 60 segundos Mantiene el bloqueo de entradas y la sesión con menos peticiones
Escritorio y resto del panel Desactivar o reducir a 120 segundos Rara vez lo necesitas
Parte pública (frontend) Desactivar Salvo que un plugin concreto lo necesite

Con un plugin

La forma más sencilla de controlar el Heartbeat es con un plugin. Estas son las opciones que te recomiendo:

  • Heartbeat Control: gratuito y específico para esta tarea. Permite modificar o desactivar el Heartbeat por zonas.
  • WP Rocket: incluye una opción para reducir o desactivar la actividad del Heartbeat, ideal si ya lo utilizas para la caché.
  • Perfmatters: permite desactivarlo o fijar la frecuencia, junto con muchas otras optimizaciones. Te lo cuento en mi análisis de Perfmatters.

Optimizar heartbeat de WordPress con Perfmatters

Con cualquiera de ellos podrás fijar el latido cada 15, 30, 60 o 120 segundos, o desactivarlo en zonas concretas.

Con código

Si prefieres no instalar plugins, puedes añadir estos fragmentos con un plugin de snippets o en el functions.php de tu child theme.

Para reducir la frecuencia del Heartbeat (el valor debe estar entre 15 y 120 segundos):

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

Para desactivar el Heartbeat en todo WordPress excepto en el editor de entradas, que es la opción más segura:

add_action( 'init', function() {      global $pagenow;      if ( is_admin() && in_array( $pagenow, array( 'post.php', 'post-new.php' ), true ) ) {          return;      }      wp_deregister_script( 'heartbeat' );  }, 1 );

No te recomiendo desactivarlo por completo, porque perderías el aviso de bloqueo cuando varias personas editan la misma entrada y el control de sesión en el editor.

PD. Si copias código desde otra página web, revisa que las comillas sean rectas (‘). Las comillas tipográficas (‘ ’) provocan un error fatal y tu WordPress dejará de cargar.

Servicio de Diseño web WordPress

Diseño tu página web en WordPress rápida y optimizada para SEO. Tu web pensada para convertir visitas en clientes

Otros consejos para reducir las peticiones a admin-ajax.php

  • No dejes muchas pestañas del panel abiertas durante horas, cada una lanza sus propios latidos.
  • Revisa los plugins que utilizan AJAX en la parte pública y elimina los que no aporten valor.
  • Carga los scripts solo donde se necesitan. Te lo explico en esta guía de carga condicional en WordPress.
  • Optimiza también el cron de WordPress, otro proceso en segundo plano que consume recursos. Aquí tienes cómo configurar el WP-Cron de WordPress.
  • Si tu tienda online o equipo editorial sigue saturando el servidor, puede que necesites un hosting con más recursos.

Conclusiones sobre el Heartbeat de WordPress

La API Heartbeat y admin-ajax.php son piezas esenciales de WordPress: sin ellas no tendrías autoguardado, bloqueo de entradas ni avisos de sesión.

Sin embargo, tienen su lado oscuro cuando se acumulan peticiones. Mi recomendación: reduce el Heartbeat a 60 segundos en el editor, desactívalo en el resto de zonas y vigila los plugins que abusan de AJAX. Es una de esas pequeñas mejoras que ayudan a optimizar tu WordPress sin coste.

Eso sí, antes de tocar nada, prueba siempre los cambios en un entorno de staging. Y si prefieres que me encargue yo, en mi servicio de mantenimiento web WordPress optimizo el rendimiento y los procesos en segundo plano de tu página web.

¡Ahora es tu turno! ¿Habías oído hablar del Heartbeat? Anímate a optimizarlo y cuéntame los resultados en los comentarios.

Preguntas frecuentes sobre el Heartbeat y admin-ajax.php

¿Qué es la API Heartbeat de WordPress?

Es un sistema de WordPress que envía peticiones periódicas al servidor a través de admin-ajax.php para gestionar el autoguardado, el bloqueo de entradas cuando otro usuario las edita, el control de la sesión y notificaciones en tiempo real.

¿Qué es admin-ajax.php?

Es un archivo del núcleo de WordPress ubicado en /wp-admin/ que procesa las peticiones AJAX, es decir, las acciones que actualizan parte de una página sin recargarla, tanto en el panel como en la parte pública.

¿Es seguro desactivar el Heartbeat de WordPress?

Desactivarlo en el escritorio y en la parte pública suele ser seguro. En el editor de entradas es mejor reducir su frecuencia en lugar de desactivarlo, porque se pierde el bloqueo de entradas y el control de sesión.

¿Cada cuánto se ejecuta el Heartbeat de WordPress?

Por defecto, cada 15 segundos mientras editas una entrada y cada 60 segundos en el resto del panel. Puedes modificar el intervalo entre 15 y 120 segundos con un plugin o con el filtro heartbeat_settings.

¿Por qué admin-ajax.php consume tanta CPU?

Porque cada petición carga WordPress en el servidor y no se puede cachear. Si hay varias pestañas del panel abiertas, varios usuarios editando o plugins que utilizan AJAX de forma intensiva, las peticiones se acumulan y disparan el consumo.

¿Qué plugin utilizar para controlar el Heartbeat?

Heartbeat Control es una opción gratuita y específica. Si ya utilizas WP Rocket o Perfmatters, ambos incluyen opciones para reducir o desactivar el Heartbeat sin instalar nada más.

¿El Heartbeat afecta al SEO?

De forma indirecta. Si satura el servidor, la página web responde más lento a los visitantes y a Google, lo que empeora el tiempo de respuesta y la experiencia de usuario. Optimizarlo ayuda a mantener el servidor con recursos disponibles.

Resumir post con IA
Servicio de Diseño web WordPress

Diseño tu página web en WordPress rápida y optimizada para SEO. Tu web pensada para convertir visitas en clientes

Pide presupuesto

Y recibe respuesta en menos de 24h

Sin problema. En el último paso cuéntame tu caso y te diré por dónde empezar.

Borja Aranda Vaquero - Consultor SEO, Consultor de Google Ads y Diseñador Web WordPress
Resumen de privacidad

Esta web utiliza cookies para que pueda ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a esta página web y saber qué secciones de la página web te gustan más.