Saltar al contenido

Cómo evitar que admin-ajax ralentice la velocidad de tu blog

9 julio, 2017

Si has llegado a éste artículo, es porque estás intentando averiguar por qué tu blog va muy lento últimamente. Y porque, más que probablemente has encontrado que el archivo admin-ajax.php es el culpable.

Seguramente te preguntes porqué exactamente éste archivo, admin-ajax, es el que ralentiza la carga de tu blog. al grado de ver “La Comunidad del Anillo” mientras la ves desplegada correctamente. Bien, te tengo dos teorías y soluciones de por qué sucede.

[thrive_text_block color=”blue” headline=””] Hay dos posibles problemas respecto al archivo: uno es el núcleo de WordPress, y el otro tiene que ver con la gestión de los plugins. Uno de ellos, o ambos, son los que causan el problema.[/thrive_text_block]

Antes que nada, ¿qué es el archivo admin-ajax.php?

Desde WordPress 3.6 (estamos en la versión 4.8), Automattic introdujo la API Heartbeat de WordPress, que permite a WordPress crear una comunicación entre tu navegador y el servidor. Esto implicó una majora en el tiempo que duraba una sesión, evitando el inicio de sesión a cada momento, una mejora en la gestión de revisiones, y sobre todo, el salvado automático de las entradas cuando escribimos un post.

Solución 1: Disminuye el uso del admin-ajax

La API de Heartbeat utiliza el archivo wp-admin/admin-ajax.php para ejecutar las llamadas AJAX desde el navegador. Si bien ésto viene genial, como ya te dije antes, ésto puede causar un alto uso del CPU y de el número de llamadas PHP. Por ejemplo: si dejas abierto un post que has comenzado a escribir, durante una hora, hará llamadas constantemente para el autosalvado.

Cuando las llamadas al servidor son demasiadas, y constantes, entonces el hosting o servidor se ralentizan, provocando que tu blog tarde mucho en cargar.

Puedes reducir su uso con un plugin gratuito, que es muy sencillo de utilizar.

Lo primero, descarga e instala el plugin que se llama “Heartbeat Control“.

Luego, a Ajustes -> Heartbeat Control.

Allí verás dos opciones: Control Heartbeat Locations y Override Heartbeat Frecuency.

En la primera, verás:

  • Use default (configuración por defecto)
  • Disable everywhere (desactivar en todos lados)
  • Disable on pages (desactivar en las páginas)
  • Allow only on edit posts and pages (permitir solo en edición de artículos y páginas)

No te recomiendo desactivarlo totalmente porque no se salvarán tus borradores automáticos y porque muchos plugins utilizan ésta API para funcionar, y tendrás problemas. Tan solo permitelo en la edición de posts y artículos.

En la frecuencia, pues coloca lo que consideres. Yo uso 60 segundos.

Si ésta solución no funcionó, entonces tu problema es otro, y debes leer lo siguiente.

Solución 2: Detectar y desactivas los Plugins que están abusando del admin-ajax.php

Este problema es mucho más común, y es quizá el que te pase a ti. Parece que muchos desarrolladores de plugins utilizan mucho la API Heartbeat, utilizando de alguna manera admin-ajax y las solicitudes van aumentando en éste archivo.

Cuando recién instalaba éste sitio, detectando tres plugins que hacían un abuso del admin-ajax, logré reducir la carga de 9 segundos a 3.2 segundos. Alucinante.

Te dejo algunos pasos a continuación para que sepas cómo localizar esos plugins que tantos problemas te causan.

No digo que esos plugins sean manos, sea cuales fueran, sino que, quizá por tu hosting limitado, causen problemas, o quizá por la combinación que tienes de plugins. Las causas son muchas.

Te explico cómo localizarlos. Quizá haya mejores formas, pero ésta es la que sé utilizar.

Lo primero que debes hacer es ir a GTMetrix. Luego de eso haz el test de tu página web.

Luego de eso debes ir a la pestaña “Waterfall”, que no es más que una línea de tiempo de tu blog desglosado por elementos.

Ahí busca “POST admin-ajax.php”, y verás cuánto tiempo añade a tu carga. Mira el mío (que aún tiene trabajo por hacer)

Ya sabemos cuánto tiempo añade admin-ajax a la carga de nuestro blog. Ahora toca descubrir qué es lo que hace que se ejecute éstas llamadas.

Ahí mismo, en la pestaña “POST” podrás ver las llamadas o ejecuciones que utilizan el archivo. Mira el mío:

Al ver la llamada “buffer”, de inmediato sé que es mi plugin para compartir o autopublicar entradas. En éste caso es Monarch o Jetpack.

Tengo dos opciones: eliminarlos, y cambiarlos por otros, y así el tiempo de carga se reduce. O bien, comunicaerte con los desarrolladores y solicitar una solución.

No siempre es tan fácil de encontrar el plugin culpable, pero al menos ya tienes una guía.