Optimizar el uso de recursos del admin-ajax.php de WordPress
¡No te enviaremos spam, lo prometemos! Enviamos a nuestros suscriptores nuestro contenido en WordPress, hosting, marketing digital y programación.
-
Responsable:
RAIOLA NETWORK, S.I. C.I.F.: B27453489 Avda de Magoi, 66, Semisótano, Dcha., 27002 Lugo (Lugo) Telefono: +34 982776081 e-mail: info@raiolanetworks.es
-
Finalidad:
Atender solicitudes de información, ejecución de la contratación de servicios y remisión de comunicaciones comerciales.
-
LEGITIMACIÓN:
Consentimiento del interesado y contratación de productos y/o servicios del Responsable
-
Destinatario
No se ceden datos a terceros, salvo obligación legal. Personas físicas o jurídicas directamente relacionadas con el Responsable Encargados de Tratamiento adheridos al Privacy Shield
-
DERECHOS:
Acceder, rectificar y suprimir los datos, portabilidad de los datos, limitación u oposición a su tratamiento, derecho a no ser objeto de decisiones automatizadas, así como a obtener información clara y transparente sobre el tratamiento de sus datos.
-
INFORMACIÓN ADICIONAL:
Se puede consultar la política de privacidad de forma más detallada aquí.
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.
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.
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.
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.
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.
Tenemos 12 comentarios en "Optimizar el uso de recursos del admin-ajax.php de WordPress"
Interesante tu aporte
Gracias a ti por leernos Samuel.
Un saludo.
Buenas Álvaro!
¿Qué configuración recomiendas en el plugin Heartbeat Control?
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.
interesante articulo Alvaro , otro mas para optimizacion, gracias.
Gracias a ti Javier, me alegro de que te sirva.
Un saludo.
¡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?
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.
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.
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.
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.
Hola, pues no te puedo decir si o no, depende de si tu tema y tus plugins utilizan el API Heartbeat…