WooCommerce es el plugin más popular para crear tiendas online en WordPress. Este plugin utiliza tecnología AJAX para ofrecer una experiencia de usuario fluida y dinámica. Una de las llamadas AJAX clave es wc-ajax=get_refreshed_fragments, diseñada para actualizar los datos del carrito de compras en tiempo real sin recargar la página completa. Aunque esencial para la funcionalidad del carrito, esta característica puede impactar negativamente en el rendimiento del sitio si no se maneja con cuidado.
¿Cómo Funciona wc-ajax=get_refreshed_fragments?
Cuando los clientes agregan productos al carrito o realizan cambios en él, WooCommerce hace una llamada a /?wc-ajax=get_refreshed_fragments para actualizar los fragmentos del carrito en la página. Esto significa que los detalles, como la cantidad de artículos y el total del carrito se actualizan instantáneamente sin necesidad de cargar nuevamente toda la página.
Generación de Cargas Lentas
El problema comienza cuando esta petición se ejecuta en todas las páginas, incluso en aquellas donde la visualización actualizada del carrito no es necesaria. Esto puede suceder, por ejemplo, si el carrito o su representación minificada se incluye en todas las páginas a través de un widget. El resultado es un número excesivo de llamadas a admin-ajax.php, incrementando la carga en el servidor y ralentizando la experiencia del usuario.
¿Que son las Peticiones a admin-ajax.php?
admin-ajax.php es un archivo esencial en WordPress que gestiona las solicitudes AJAX. AJAX (Asynchronous JavaScript and XML) permite la comunicación entre el navegador y el servidor, facilitando la actualización de partes de una página sin recargarla completamente. WooCommerce, al igual que otros plugins y temas de WordPress, utiliza admin-ajax.php para ejecutar operaciones en el backend sin interrumpir la experiencia del usuario en el frontend.
Las peticiones excesivas a admin-ajax.php, especialmente en sitios con alto tráfico o con una gran cantidad de elementos dinámicos, pueden sobrecargar el servidor. Esto se traduce en tiempos de carga más lentos y, potencialmente, en una peor experiencia de usuario y un impacto negativo en el SEO del sitio.
Soluciones Prácticas para Optimizar wc-ajax=get_refreshed_fragments
Identificación de Peticiones AJAX con Query Monitor
Para utilizar Query Monitor, debes instalar y activar el plugin en tu sitio web de WooCommerce.
Query Monitor es un plugin utilizado para la gestión de instalaciones Wordpress con WooCommerce. Este plugin permite visualizar las peticiones AJAX en tu sitio, por lo que al instalar y activar Query Monitor, podrás:
- Identificar peticiones innecesarias: Navega por tu sitio y observa las peticiones a admin-ajax.php que se realizan en cada página. Query Monitor te mostrará detalles sobre estas peticiones, ayudándote a identificar cuáles son esenciales y cuáles podrían eliminarse.
- Detectar Sobrecargas: Presta especial atención a las páginas que no requieren una actualización dinámica del carrito de compras, como las páginas de información, blogs o secciones de contacto. Si estas páginas están generando peticiones a admin-ajax.php, es una señal de que se pueden optimizar.
Para probar las peticiones de 'wc-ajax=get_refreshed_fragments’, ve a la página de carrito de compras de tu sitio web y agrega algunos productos al carrito. Luego, abre la ventana de gestión del plugin, y accede dentro de los procesos de WooCommerce para poder monitorizarlo.
Uso de la Función disable_ajax_requests para desactivar peticiones
Una vez identificadas las peticiones innecesarias, puedes desactivarlas selectivamente usando una función personalizada en tu archivo functions.php del tema de tu Wordpress.. Para acceder y editar el archivo funcitions.php de tu tema de Wordpress, le recomendamos que acceda a la gestión del mismo tema desde su panel de administración de Wordpress.
La función disable_ajax_requests puede ser adaptada para desactivar las peticiones en páginas específicas:
function disable_ajax_requests() {
if ( ! is_cart() && ! is_checkout() && ! is_account_page() ) {
wp_dequeue_script( 'wc-cart-fragments' );
wp_dequeue_script( 'woocommerce' );
wp_dequeue_script( 'wc-add-to-cart' );
remove_action( 'wp_head', 'wc_fragment_refresh', 10);
}
}
add_action( 'wp_enqueue_scripts', 'disable_ajax_requests', 100 );
Nota: Este código desactiva las peticiones AJAX relacionadas con el carrito en páginas que no son esenciales para la funcionalidad del carrito, como la página de carrito, checkout o cuenta de usuario. Asegúrate de probar tu sitio después de implementar estos cambios para verificar que todo funcione como se espera.
Mejoras Adicionales en el Rendimiento
Además de las peticiones AJAX, hay otras estrategias que puedes implementar para mejorar aún más el rendimiento:
- Optimización de Imágenes: Recomendamos utilizar plugins de optimización de imágenes para reducir el tamaño de las imágenes sin perder calidad.
- Minimización de CSS y JavaScript: Plugins como Autoptimize pueden ayudarte a minimizar y combinar archivos CSS y JavaScript, reduciendo las solicitudes HTTP y el tiempo de carga de la página.
- Uso de Sistemas de Caché: Configura correctamente plugins de caché como WP Rocket (De pago) o W3 Total Cache para almacenar versiones estáticas de tus páginas, disminuyendo la carga en el servidor. En cdmon disponemos de una herramienta de caché instalada en el servidor (Vanish), que está optimizada para funcionar con instalaciones Wordpress. Cómo usar la herramienta de caché de cdmon.
Desde el panel de control de cdmon, tienes acceso a herramientas y servicios diseñados para optimizar el rendimiento de tu hosting, como nuestra herramienta de Caché Varnish que puede activar o desactivar en cualquier momento, o también puede aumentar la versión de PHP a una versión más reciente para buscar la máxima optimización
Optimizar las peticiones wc-ajax=get_refreshed_fragments y otras operaciones AJAX en WooCommerce es crucial para mantener tu sitio rápido y eficiente. Siguiendo estas soluciones prácticas, podrás mejorar significativamente el rendimiento de tu tienda online, asegurando una experiencia de usuario óptima y un mejor rendimiento general del sitio.
Para más información, puedes contactar con nosotros.