Optimizar el uso de recursos del admin-ajax.php de Wordpress

Fecha: 14/10/2015
Optimizar Wordpress para nosotros no suele ser un problema, ya que estamos especializados en la optimización de Wordpress para conseguir mejorar la velocidad de carga y al mismo tiempo reducir el consumo de recursos.
Para optimizar Wordpress al 100% hay que entender completamente su funcionamiento, es necesario conocer cómo funciona cada parte de Wordpress y que se puede hacer para evitar consumos de recursos descontrolados.

admin-ajax.php wordpress

El admin-ajax.php es un archivo que forma parte de todas las instalaciones de WordPress desde hace tiempo, su función es ofrecer un apoyo para todos los plugins y themes que realicen peticiones mediante AJAX a través de la API Heartbeat de WordPress.

Índice del artículo
  • El Admin-ajax y HeartBeat
  • ¿Cómo funciona Heartbeat en Wordpress?
  • Optimizar el admin-ajax.php en Wordpress
  • Conclusiones sobre el admin-ajax.php

El Admin-ajax y HeartBeat


Vamos a empezar por el principio, en la versión 3.6 de Wordpress apareció una nueva API que permite a Wordpress comunicarse con el navegador del usuario utilizando AJAX.
Aunque la mayoría de usuarios no lo saben, la propia instalación predeterminada de Wordpress tiene funcionalidades que se aprovechan de las ventajas de AJAX para funcionar, por ejemplo:

  • Las funciones de autoguardado de revisiones en el editor entradas y páginas de Wordpress.

  • El guardado de posiciones de los widgets de Wordpress en el editor de widgets del back-end.

  • Normalmente los widgets de autentificación colocados en widgets aprovechan las ventajas de AJAX para que el usuario se autentifique y no tener que recargar la página.


Evidentemente la API Heartbeat de Wordpress y el admin-ajax.php sirven para mucho más, y ofrecen apoyo para muchas funcionalidades implementadas por miles de plugins. Existen muchos plugins conocidos y muy utilizados que se apoyan de forma importante en el admin-ajax.php:

  • WooCommerce

  • Shareholic

  • Easy Digital Downloads

  • Monarch

  • Jigoshop


Solo son unos ejemplos, actualmente casi todos los plugins complejos utilizan el admin-ajax.php para alguna de sus funcionalidades.

El problema que tiene la API Heartbeat de Wordpress es que consume muchísimos recursos de CPU y RAM, y las peticiones al archivo admin-ajax.php suelen ser las peticiones más largas y que más tardan en responder debido al “wait” que se realiza mientras que el servidor procesa los datos.

¿Cómo funciona Heartbeat en Wordpress?


El funcionamiento de Heartbeat es realmente sencillo, es más, la razón por la que se consumen tantos recursos es que el planteamiento es demasiado sencillo.

Heartbeat funciona mediante pulsos, es decir, cada cierto periodo de tiempo Wordpress envía una petición o “pulso” mediante el admin-ajax.php (esto quiere decir que se ejecuta el admin-ajax.php).

De forma predeterminada Wordpress realiza una petición al admin-ajax.php cada 15 segundos, esta petición es de 98 bytes y apenas causa ningún uso de recursos, el problema viene cuando son varios usuarios los que ejecutan procesos PHP con peticiones al admin-ajax.php y varios plugins utilizan de forma intensiva el API de Heartbeat realizando peticiones continuas cada 15 segundos.

Imagínate que tenemos una instalación de Wordpress con 30 plugins de los cuales 18 utilizan de alguna forma el admin-ajax.php y vamos a imaginar que uno de los plugins es WooCommerce, uno de los que más utilizan el admin-ajax.php.
En este caso, se estarían ejecutando peticiones al admin-ajax.php CONTINUAMENTE causando un consumo de recursos altísimo y si tenemos tráfico, el consumo de recursos podría ser insostenible llegado a cierto número de visitas.

admin-ajax.php wordpress

Por esta razón hemos explicado en más de una ocasión, que para administrar sitios web Wordpress necesario saber cómo funciona Wordpress y tener en cuenta que Wordpress consume recursos para poder funcionar.

Optimizar el admin-ajax.php en Wordpress


Para optimizar el admin-ajax.php de Wordpress, o mejor dicho, para mitigar su consumo de recursos tenemos que entender primero como funciona, de ahí que hayamos explicado primero toda la teoría de funcionamiento de la API Heartbeat de Wordpress y del archivo admin-ajax.php de Wordpress.

¿Cómo podemos mitigar el consumo de recursos del admin-ajax.php y optimizar la velocidad de carga de Wordpress?
Esto lo podemos hacer con distintos plugins para Wordpress que nos permiten especificar los períodos de tiempo entre peticiones al admin-ajax.php, lo que puede ayudarnos a reducir el consumo de recursos hasta en un 90% aumentando el tiempo entre peticiones hasta 60 segundos.
Incluso también podríamos desactivar por completo el API Heartbeat de Wordpress, pero con esto muchas funcionalidades importantes dejarían de funcionar por completo y algunos plugins dejarían también de funcionar.

admin-ajax.php wordpress

Estos son algunos plugins para mitigar el consumo de recursos de las peticiones realizadas al admin-ajax.php de Wordpress:

  • Heartbeat Control: En principio se trata del plugin más utilizado, pero no por eso se va a tratar de la mejor opción.
    Con Heartbeat Control podremos incluso llegar a desactivar Heartbeat y que no se hagan peticiones al admin-ajax.php de Wordpress, evidentemente todos los plugins que usan el API dejaran de funcionar.



  • AJAX Heartbeat Tool: Prácticamente permite lo mismo que Heartbeat Control, nos permite desactivar por completo el API o configurar los tiempos entre peticiones, por otro lado también nos permite elegir en que partes de Wordpress se seguirán aceptando peticiones al admin-ajax.php.


Por el momento no conozco ningún plugin más que nos permita realizar esto, aunque también podemos realizarlo mediante código añadiendo ciertas funciones al código de Wordpress o al código del theme.

Conclusiones sobre el admin-ajax.php


Aunque la aparición de la API Heartbeat para Wordpress fue algo bueno, una novedad para los programadores y un gran avance en la conversión de Wordpress en un completo CMS, la verdad es que ha incrementado los requisitos mínimos de recursos para funcionar de Wordpress, es más, no solo los ha aumentado, sino que los ha duplicado prácticamente.

Como proveedores de hosting y empresa especializada en la optimización de Wordpress, a diario vemos casos de clientes que instalan tantos plugins y realizan tantas peticiones al admin-ajax.php que sus Wordpress van lentos, pero ellos son incapaces de entender la razón por la cual su Wordpress va lento.

Finalmente, me gustaría aclarar una cosa: si tienes una tienda online con WooCommerce y un theme que utiliza mucho el admin-ajax.php de Wordpress, y ademas utilizas algunos plugins mas que realicen uso intensivo de esta API, de poco servirá que apliques alguna solución, ya que si quieres reducir el consumo tendrás que rehacer tu sitio web con componentes que usen menos el admin-ajax.php, o eso o dejar medio sitio fallando.
Álvaro Fontela
Álvaro Fontela

Alvaro Fontela es consultor WordPress especializado en WPO y rendimiento web, además de co-fundador y CEO de Raiola Networks.

Artículos relacionados

Si te ha gustado este post, aquí tienes otros que pueden ser de tu interés. ¡No dejes de aprender!

Tenemos 14 comentarios en Optimizar el uso de recursos del admin-ajax.php de Wordpress

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Avatar del autor del comentario

Samuel Ezerzer

14/10/2015 a las 13:37

Interesante tu aporte

Responder
Avatar del autor del comentario

Alvaro Fontela

16/10/2015 a las 23:49

Gracias a ti por leernos Samuel.

Un saludo.

Responder
Avatar del autor del comentario

Jose Javier Garcia

26/04/2016 a las 00:49

Buenas Álvaro!
¿Qué configuración recomiendas en el plugin Heartbeat Control?

Responder
Avatar del autor del comentario

Alvaro Fontela

27/04/2016 a las 15:34

Hola Nacho, depende totalmente de lo que tenga tu web y el uso que haga de AJAX, puedes intentar desactivar todo el AJAX para el front y ver si falla algo.

Un saludo.

Responder
Avatar del autor del comentario

javier

28/04/2017 a las 13:03

interesante articulo Alvaro , otro mas para optimizacion, gracias.

Responder
Avatar del autor del comentario

Alvaro Fontela

30/04/2017 a las 21:54

Gracias a ti Javier, me alegro de que te sirva.

Un saludo.

Responder
Avatar del autor del comentario

Netfreelance

24/10/2017 a las 13:03

¡Gracias por el aporte Alvaro!

Hoy recién he visto que Fernando Tellado de ayudawordpress ha lanzado un plugin que elimina ciertas cosas de WordPress, tales como el Hearthbreath Control, funciones, servicios y scripts no necesarios, y que normalmente ralentizan tu instalación. Se llama WordPress WPO Tweaks. ¿Lo has probado?

Responder
Avatar del autor del comentario

Héctor Luaces

05/04/2018 a las 17:25

Hola.

Las opciones que da son todas cosas interesantes, pero por lo general no nos gusta recomendar plugins "cajón de sastre" que no ofrecen un control granulado (como es este) sobre las distintas configuraciones que permite.

Si te fijas, ese plugin no te permite especificar qué quieres activar y qué no, es una "solución en un clic". Esto no lo consideramos bueno porque si alguna de las opciones falla tendrás que desactivar por completo el complemento.

Es mejor tenerlo todo desgranado —mejor aún, en un plugin a medida—.

De todas formas, si a ti no te causa ningún error y no te fuerza a desactivarlo no tiene mayor problema.

Un saludo.

Responder
Avatar del autor del comentario

Juan Carlos Lopez Castillo

13/03/2018 a las 04:05

Hola Alvaro estoy tratando de mejorar el rendimiento de una tienda en wordpres con woocomerce, que recomendarías subir los intervalos de frond end de 15 a 60 o de 15 a 45, saludos.

Responder
Avatar del autor del comentario

Héctor Luaces

05/04/2018 a las 17:40

Hola, Juan Carlos.

Depende de los plugins que uses, pero por norma general no vas a tener problemas.

Súbelo tranquilamente a 60 segundos.

Cualquier cosa nos dices.

Un saludo.

Responder
Avatar del autor del comentario

Federico

20/08/2020 a las 20:34
Quizás es muy tarde para preguntar, pero puse wp roquet y me da 3 opciones para activar, desactivar o reducir heartbeat. 1: En backend (puse reducir), en 2: Editor de entradas (lo deshabilité) y en 3: Frontend (lo deshabilité). Podría traerme problemas la acción nº 2? Es un portal de noticias.
Muchas Gracias.
Responder
Avatar del autor del comentario

Alvaro Fontela

24/08/2020 a las 16:25
Hola, pues no te puedo decir si o no, depende de si tu tema y tus plugins utilizan el API Heartbeat...
Responder
Avatar del autor del comentario

Taisa

14/07/2023 a las 23:26
Buscando info para optimizar más mis webs en un hosting elástico vuestro y así ver si puedo esperar un poco para ampliar di con esto... Pero veo que tiene su tiempo. ¿Sigue siendo válido o hay alguna mejora o novedad? ¡Gracias Álvaro!
Responder
Avatar del autor del comentario

Alvaro Fontela

17/07/2023 a las 13:01
Hola Taisa, el admin-ajax (API HeartBeat) sigue igual, así que el contenido del post sigue siendo válido en 2023.
Responder

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *