[elementor-template id="80835"]
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.
Samuel Ezerzer
14/10/2015 a las 13:37Interesante tu aporte
Responder a Samuel Ezerzer
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *