Optimizar el uso de recursos del admin-ajax.php de Wordpress
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
- ¿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.
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.
Deja una respuesta
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *