View Categories

Cómo reducir la carga del servidor de Admin Ajax en WordPress

Al probar la velocidad de carga de su WordPress es posible que haya observado que el archivo admin-ajax.php es responsable de la carga lenta.

En este artículo, explicaremos el funcionamiento de este archivo y cómo puede reducir el tiempo de respuesta del servidor y el uso de la CPU al disminuir el número de solicitudes generadas por admin-ajax.php.

¿Qué es admin-ajax.php en WordPress? #

En 2013, WordPress introdujo la API Heartbeat de WordPress que proporcionaba varias funcionalidades importantes, como la función de guardado automático, inicio de sesión y advertencia de bloqueo posterior mientras otro usuario escribía o editaba una publicación de WordPress.

Dos características muy destacadas de la API Heartbeat son:

  • Autoguardado. Cada vez que guarda un borrador de una publicación y continúa trabajando en él, WordPress guarda automáticamente las adiciones a la publicación.
  • Advertencia de bloqueo. Cada vez que intente editar una publicación en la que otro usuario ya está trabajando, aparecerá una advertencia emergente sobre la situación.

Las características mencionadas anteriormente son posibles gracias a la API Heartbeat de WordPress que crea conexiones entre el servidor y el navegador para una comunicación y respuestas adecuadas.

WordPress Heartbeat genera solicitudes de comunicación con el servidor y desencadena eventos al recibir datos. Esto generalmente aumenta la carga en el servidor y finalmente ralentiza el Panel de administración de WordPress.

¿Cómo los plugins sobrecargan el archivo admin-ajax.php? #

La mayoría de las veces cuando vemos los problemas en un archivo admin-ajax.php se debe a las solicitudes realizadas por los plugins instalados. Estos plugins hacen que el backend de WordPress sea lento al enviar solicitudes para lograr una determinada funcionalidad, como activar una ventana emergente o actualizar un contador de social sharing. Estos plugins hacen que toneladas de estas solicitudes se mantengan funcionales.

Sin embargo, hacer estas solicitudes no significa necesariamente que aumente la carga del archivo admin-ajax.php. Si las solicitudes se manejan correctamente y los desarrolladores de plugins siguen las mejores prácticas para utilizar las llamadas AJAX en sus plugins, entonces no tiene un impacto negativo en el archivo admin-ajax.php. Por lo tanto, también es importante diagnosticar cualquier plugin problemático antes de desactivarlo definitivamente.

Diagnóstico de plugins

Es importante diagnosticar el plugin correctamente para identificar su impacto en el archivo admin-ajax.php que posiblemente puede hacer que el backend de WordPress sea lento o el consumo de CPU excesivo. Para hacerlo, utilizaremos dos herramientas, GTmetrix y WebPageTest.

Pruebe su sitio utilizando cualquiera de las herramientas anteriores. En el caso de GTmetrix, navegue a su pestaña Waterfall para obtener una lista completa de las solicitudes. Al mirar de cerca la lista, puede ver las solicitudes POST realizadas por el archivo admin-ajax.php.

Optimizar heartbeat en WordPress


En nuestro caso, estas solicitudes fueron hechas principalmente por un plugin que activa un Feed de Instagram. Este plugin en particular mantiene una conexión abierta al API de Instgram y se actualiza cada 10 segundos. Expanda para obtener información detallada. En la pestaña Response, se puede ver el lugar exacto que desencadena estas solicitudes.

Chrome incluye herramientas para desarrolladores que pueden ayudarlo a analizar las solicitudes realizadas por varios plugins. Para hacerlo, abra el sitio web en el navegador Chrome, vaya al Inspector de Elementos y haga clic en la pestaña Network.

Vuelva a cargar la página y vea la lista que se llena con solicitudes actualizadas. En el cuadro de filtro, escriba ajax o admin-ajax para filtrar los archivos necesarios. Esto le brinda información sobre la cantidad de solicitudes, así como su frecuencia y la fuente de la solicitud.

Luego, haga clic en el archivo para ver más información. En la pestaña de respuesta, le da una pista del plugin que causa esta solicitud. En nuestro caso, esta vez, ademas del feed de Instagram, hemos encontrado que un plugin para un Buscador Ajax genera estas solicitudes.

Optimizar heartbeat en wordpress

Para evitar esto, asegúrese de que el plugin que está utilizando esté actualizado y, de lo contrario, intente contactar con el desarrollador del plugin para que puedan solucionar el problema. Si es posible, también puede reemplazarlo con otro plugin, que no sobrecargue el archivo admin-ajax.php.

Es importante realizar un diagnóstico completo antes de deshacerse de cualquier plugin, ya que algunos plugin son críticos para su sitio WordPress. Las herramientas anteriores pueden ayudarlo a llegar a la raíz y elegir la mejor solución posible.

En la siguiente sección, veremos cómo podemos reducir estas solicitudes y evitar que el archivo admin-ajax.php se sobrecargue.

Optimizar admin-ajax.php #

Para optimizar el backend de WordPress lo mejor enfoque es deshabilitar la API Heartbeat o al menos establecer un intervalo de tiempo más largo para que no llegue al servidor cada pocos segundos.

Instalar el plugin de Heartbeat Control

Inicie sesión en su Panel de administración de WordPress, navegue a Plugins > Agregar nuevo, busque Heartbeat Control, instálelo y actívelo.

Configure el plugin Heartbeat Control

Vaya a Configuración > Heartbeat Control Settings. Allí encontrará tres menús desplegables para configurar el plugin.

  1. Permitir Heartbeat. Puede seleccionar las áreas donde funcionará la API Heartbeat. Hay tres opciones para elegir:

    Panel de control de WordPress: Esto habilitará la API Heartbeat para el panel de control de WordPress.
    Frontend: Esto habilitará API en el frontend.
    Editor de publicaciones: marque esta casilla de verificación si desea permitir que la API Heartbeat esté habilitada en las funciones de autoguardado y bloqueo posterior.
  1. Desactivar Heartbeat. Seleccione esto si desea que la API Heartbeat de WordPress se desactive en ubicaciones particulares. Tenga cuidado al elegir las ubicaciones porque otros plugins también pueden estar utilizando la API Heartbeat de WordPress. Si es el único usuario del backend de WordPress, puede desactivarlo en todas partes y luego verificar si el sitio web se daño en alguna forma. Sin embargo, si su sitio tiene más de un usuario que contribuye regularmente, es recomendable permitir el API Heartbeat solo en las páginas de edición.
  2. Modificar Heartbeat. Este menú desplegable le permite establecer el intervalo de tiempo, que va de 0 a 300 segundos para ejecutar solicitudes admin-ajax. Al establecerlo en 120 segundos, la solicitud se generará cada 120 segundos. Eso reducirá drásticamente la carga en el servidor.

Resumen #

Teniendo en cuenta su conjunto de características, la API Heartbeat es muy útil en su sitio web de WordPress. Sin embargo, si no se usa correctamente, puede aumentar el tiempo de carga de un backend de WordPress y el front-end al enviar y recibir solicitudes de WordPress admin-ajax, terminando en un consumo excesivo de recursos de CPU.

Solo hay dos soluciones a este problema. O bien, desactive la API Heartbeat o actívela solo en algunas ubicaciones.