A veces no sé si pensar que me estoy haciendo mayor cada vez que me quejo en frente de mi ordenador porque una ventana carga lento o si soy un friki por estar siempre encima de mis páginas WordPress revisando cuántos segundos tardan en cargar.
Yo no sé tú pero cada día que pasa tengo menos paciencia. Cuando entro en una web y veo que tarda más de 3 segundos en cargar, ¡me pone de los nervios!
Antes era una persona muy paciente pero los tiempos han cambiado.
Sin ir más lejos, el otro día comprando la última publicación de mi libro favorito en una web bastante conocida tuve una mala experiencia de usuario: el sitio cargaba demasiado lento y antes de completar el carrito de compra me aburrí y lo cerré.
Esto me llevó a pensar si yo también podía estar dejando de atraer tráfico web web hacia mis sitios WordPress sin saberlo y si estaban siendo los tiempos de carga de mis webs realmente óptimos.
En los análisis que realicé, me encontré con un mismo recurso que parecía ser el responsable, el gran desconocido admin-ajax.php.
Comencé a investigar y a realizar diferentes pruebas y hoy quiero compartir contigo esos resultados.
¿Has pensado si tu web tiene una carga óptima?, ¿tienes problemas de lentitud en tu sitio web? Quédate unos minutos y revisémoslo juntos.
Tabla de contenidos
1. ¿Qué es admin-ajax.php y cómo funciona ?
Antes de nada tienes que saber que cuando entras en una página web o pulsas el botón de refrescar del teclado tu navegador web (Chrome, Firefox, Opera….) manda una petición al servidor donde está ese WordPress alojado en internet y en consecuencia, éste devuelve una respuesta a tu ordenador según el contenido que le hayas solicitado.
Tras esto, la conexión entre el servidor y tu navegador se termina.
Teniendo esto en cuenta, admin-ajax.php es un fichero incorporado en el núcleo de WordPress a partir de la versión 3.6 que tiene como fin crear una conexión bidireccional entre tu navegador web y el sitio WordPress que visitas usando AJAX.
Lo interesante de esto es que permite solicitar nueva información al sitio WordPress aún cuando la web ya ha cargado sin necesidad de que tengas que salir de la página o tener que refrescar la pestaña del navegador.
Visto así ¿parece mágico verdad?
En su momento, gracias a este avance, el equipo de WordPress decidió incorporar de forma nativa el poder realizar autoguardados en las entradas o páginas sin necesidad de dar al botón de guardar, el seguimiento de las revisiones, la protección de entradas de ser editadas por diferentes personas al mismo tiempo o incluso caducar la sesión de un usuario.
Otra función interesante que aportó es que tanto los temas y plugins podían aprovechar este nuevo “medio de transporte” para mejorar la interacción con el usuario.
2. Plugins que pueden arruinar tu web y tu negocio
Estoy seguro que te suena la frase de “tienes demasiados plugins instalado en tu sitio web, deberías revisar cual no necesitas o consumen demasiado y eliminarlos o sustituirlos por otros”.
Esto es porque existen plugins como WooCommerce, Visual Composer, Monarch o Shareholic quienes abusan de este fichero y de la API de Heartbeat provocando gran lentitud y un consumo altísimo de recursos en tu hosting tanto de CPU como de RAM sin la posibilidad de poder colocarlo bajo caché.
En circunstancias normales, no debería de pasar nada a tu web pero el problema viene cuando las peticiones que llegan a admin-ajax.php son prolongadas y pesadas – en la mayoría de los casos es causado por tus plugins y/o tema activo-.
Esto hace que la carga de tu web se quede en modo “wait” (espera) mientras que tu WordPress procesa toda la información.
Fíjate en este ejemplo real analizado con Pingdom.
En él he analizado una tienda WooCommerce que no solo tiene una petición hacia admin-ajax.php sino dos provocando un tiempo de espera de más de 3 segundos sin tener el cuenta el resto de elementos que cargan la web como las imágenes, CSS, JavasScript etc.
¡Houston tenemos un problema de velocidad!
3. La mejor forma de identificar el problema
Para saber el motivo de por qué tu admin-ajax.php ha tenido ese sobresfuerzo que ha hecho que su carga tenga un impacto negativo en tu sitio WordPress te recomiendo usar GTMETRIX.
La herramienta es fácil de utilizar y no tiene pérdida, lo primero que tienes que hacer es escribir la dirección de tu web y pulsar en el botón Analyze. Luego, ve a la pestaña de Waterfall.
En la arbolada que GTMETRIX te muestra, tienes que buscar el fichero admin-ajax.php que está precedido por la palabra POST. Presta atención a las pestañas “Post” y “Response”. Estas dos te darán la clave para identificar por dónde viene el problema.
En el primer ejemplo puedes ver que hace referencia al plugin WooCommerce. Concretamente se trata de un problema relacionado con el carrito de la compra. En nuestro blog tienes un artículo dedicado exclusivamente a este tema y te invito que le eches un ojo antes de continuar con este artículo: ¿Lentitud en el carrito de compra de WooCommerce? ¡Optimiza!.
En el segundo, analizando el POST y con la ayuda de Google, veo que pertenece a uno de los plugins activo llamado Instagram Feed, ¡bingo!
Otro habitual y que no aparece en este análisis es cuando en el POST nos devuelve un “action=mtsnb_add_impression&bar_id=88&ab_variation=none.”. Este está relacionado con el plugin Notification Bar, ¡ten cuidado!
TOP Mis 5 reglas de oro para mantener sano tu WordPress
- Googlea y googlea el código que te aparece.
- No te fíes de los plugins/temas que lo hagan todo de forma visual y te prometan viajes exóticos en tu sitio WordPress.
- Siempre que puedas sustituye un plugin pesado por otro más liviano.
- Utiliza solo los plugins imprescindibles y necesarios en tu sitio. Tener más plugins no significa que tu web será la mejor.
- Si no consigues abordar el tema, consulta con profesionales dedicados a WordPress.
4. ¿Qué es el Heartbeat?
Lo sé, estoy seguro que a estas altura del artículo te estarás preguntando cómo puedes resolver esos problemas de carga de una manera práctica y sencilla.
Para esto, la forma más fácil es controlar el tiempo de las peticiones que llegan al fichero admin-ajax.php. De esta forma podrás conseguir ahorrar recursos hasta más de un 80-85% aumentando el tiempo entre cada petición.
Para ello, tendrás que controlar el tráfico de la API Heartbeat de tu WordPress que tal y como su nombre indica es la encargada de enviar peticiones (o pulso) a tu fichero admin-ajax.php cada 15 segundos cíclicamente.
Por defecto esto no debería ser ningún problema para tu WordPress ya que, como viste en la imagen anterior, la petición solo es de 98 bytes.
El conflicto viene cuando de forma exponencial incrementan las visitas en tu sitio WordPress haciendo que cada visitante que entra en él automáticamente llama a esta a esta API de forma continua.
Si a esto le añades por ejemplo, que de 20 plugins que tienes activo en tu sitio WordPress 15 de ellos utilizan admin-ajax.php, se convierte en una BOMBA letal para tu sitio y para tu Hosting.
Existen varios plugin que te pueden ayudar a controlar el latido de web WordPress y así mitigar el consumo de los recursos de las peticiones realizadas al admin-ajax.php. El que a mí más me ha gustado para esta tarea es Heartbeat Control.
Heartbeat Control cuenta con más de 90.000 instalaciones activas, requiere de la versión de WordPress 3.6 como mínimo y en el momento en la que se publica este artículo es compatible con la versión 4.9.8 de WordPress y tiene 4.5 de 5 estrellas.
Este plugin te permite fácilmente cambiar la frecuencia de la API Heartbeat de WordPress en un par de clics. También, puedes desactivarla por completo y solo permitir acceso a cosas concretas.
Permite modificar el intervalo de 15 a 300 segundos entre cada respuesta ahorrando recursos en tu Hosting.
¡OJO! No te recomiendo que desactives por complete la API de Heartbeat ya que perderás la mayor parte de funcionalidades en tu sitio y es casi seguro que muchos de tus plugins o funciones de tu tema activo dejen de funcionar.
Una vez que lo tengas instalado te recomiendo crear dos reglas en él: una que lo desactive en todas partes excepto en las paginas de edición de entradas (Post Editor) y otra que modifique solo las páginas de edición de entradas (Post Editor) y cambie su frecuencia de 15 segundos a 60 segundos.
Te dejo una imágene para que te fijes en cada cambio y no te pierdas.
Esta configuración básica te ayudará a reducir la cantidad de solicitudes y ahorrar de manera efectiva recursos en tu cuenta de Hosting.
Conclusiones
Como has podido comprobar existen formas fáciles de controlar el tráfico y consumo en el fichero admin-ajax.php con el fin de que no afecte ni a la velocidad de tu web ni tampoco a tu Hosting en cuanto a recursos.
La mayoría de las veces como ya te has podido imaginar el problema viene ocasionado por plugins o temas de terceros ya sea porque presentan incompatibilidades o no estén bien optimizados a nivel de código.
Si tienes una tienda WooCommerce, un tema que consume muchos recursos aunque sea muy bonito y como guinda del pastel tienes una gran cantidad de plugins donde más de la mitad no dejan vivir tranquilo a admin-ajax.php es muy probable que no te sirva los consejos que te enseño en este artículo.
Lo mejor para esos casos es que te replantees desde cero tu web: quita todos los plugins y el tema y busca otros más livianos y ligeros.
De lo contrario, solo estarás alimentando una bola de nieve que cada vez será más grande y difícil de conducir solo a base de limitaciones y abusos de recursos.
En pocas palabras, tendrás una web medio operativa para tirarla a la basura y llegará el día que con suerte si vendes mucho no puedas hacer más.
Ahora dime, ¿has probado a revisar la velocidad de tu sitio WordPress? Mi consejo es que cuides tu web WordPress y no seas como la web donde yo no pude comprar mi libro favorito.
Al final, lo compré en otro y ese sitio perdió mi compra y confianza.
¿Te ha resultado útil este artículo?
Equipo de Administración de Sistemas de Webempresa.com.