WooCommerce és el plugin més popular per a crear botigues en línia en WordPress. Aquest plugin utilitza tecnologia AJAX per oferir una experiència d'usuari fluida i dinàmica. Una de les crides AJAX clau és wc-ajax=get_refreshed_fragments, dissenyada per actualitzar les dades del carretó de compres en temps real sense recarregar la pàgina completa. Encara que és essencial per a la funcionalitat del carretó, aquesta característica pot impactar negativament en el rendiment del lloc si no es maneja amb cura.
Com Funciona wc-ajax=get_refreshed_fragments?
Quan els clients afegeixen productes al carret o realitzen canvis en ell, WooCommerce fa una crida a /?wc-ajax=get_refreshed_fragments per actualitzar els fragments del carretó a la pàgina. Això significa que els detalls, com la quantitat d'articles i el total del carret s'actualitzen instantàniament sense necessitat de carregar de nou tota la pàgina.
Generació de Càrregues Lentes
El problema comença quan aquesta petició s'executa en totes les pàgines, fins i tot en aquelles on la visualització actualitzada del carretó no és necessària. Això pot succeir, per exemple, si el carretó o la seva representació minimitzada s'inclou en totes les pàgines a través d'un widget. El resultat és un nombre excessiu de crides a admin-ajax.php, incrementant la càrrega en el servidor i alentint l'experiència de l'usuari.
Què són les Peticions a admin-ajax.php?
admin-ajax.php és un arxiu essencial en WordPress que gestiona les sol·licituds AJAX. AJAX (Asynchronous JavaScript and XML) permet la comunicació entre el navegador i el servidor, facilitant l'actualització de parts d'una pàgina sense recarregar-la completament. WooCommerce, igual que altres plugins i temes de WordPress, utilitza admin-ajax.php per executar operacions en el backend sense interrompre l'experiència de l'usuari en el frontend.
Les peticions excessives a admin-ajax.php, especialment en llocs amb alt tràfic o amb una gran quantitat d'elements dinàmics, poden sobrecarregar el servidor. Això es tradueix en temps de càrrega més lents i, potencialment, en una pitjor experiència d'usuari i un impacte negatiu en el SEO del lloc.
Solucions Pràctiques per Optimitzar wc-ajax=get_refreshed_fragments
Identificació de Peticions AJAX amb Query Monitor
Per utilitzar Query Monitor, has d'instal·lar i activar el plugin al teu lloc web de WooCommerce.
Query Monitor és un plugin utilitzat per a la gestió d'instal·lacions WordPress amb WooCommerce. Aquest plugin permet visualitzar les peticions AJAX al teu lloc, de manera que en instal·lar i activar Query Monitor, podràs:
- Identificar peticions innecessàries: Navega pel teu lloc i observa les peticions a admin-ajax.php que es realitzen en cada pàgina. Query Monitor et mostrarà detalls sobre aquestes peticions, ajudant-te a identificar quines són essencials i quines podrien eliminar-se.
- Detectar Sobrecàrregues: Presta especial atenció a les pàgines que no requereixen una actualització dinàmica del carretó de compres, com les pàgines d'informació, blogs o seccions de contacte. Si aquestes pàgines estan generant peticions a admin-ajax.php, és un senyal que es poden optimitzar.
Per provar les peticions de 'wc-ajax=get_refreshed_fragments’, ves a la pàgina del carret de compres del teu lloc web i afegeix alguns productes al carretó. Després, obre la finestra de gestió del plugin, i accedeix dins dels processos de WooCommerce per poder monitoritzar-lo.
Ús de la Funció disable_ajax_requests per desactivar peticions
Una vegada identificades les peticions innecessàries, pots desactivar-les selectivament usant una funció personalitzada al teu arxiu functions.php. Per accedir i editar l'arxiu functions.php del teu tema de WordPress, et recomanem que accedeixis a la gestió del mateix tema des del teu panell d'administració de WordPress.
La funció disable_ajax_requests pot ser adaptada per desactivar les peticions en pàgines específiques:
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: Aquest codi desactiva les peticions AJAX relacionades amb el carretó en pàgines que no són essencials per a la funcionalitat del carretó, com la pàgina de carretó, checkout o compte d'usuari. Assegura't de provar el teu lloc després d'implementar aquests canvis per verificar que tot funcioni com s'espera.
Millores Addicionals en el Rendiment
A més de les peticions AJAX, hi ha altres estratègies que pots implementar per millorar encara més el rendiment:
- Optimització d'Imatges: Recomanem utilitzar plugins d'optimització d'imatges per reduir la mida de les imatges sense perdre qualitat.
- Minimització de CSS i JavaScript: Plugins com Autoptimize poden ajudar-te a minimitzar i combinar arxius CSS i JavaScript, reduint les sol·licituds HTTP i el temps de càrrega de la pàgin
- Ús de Sistemes de Caché: Configura correctament plugins de caché com WP Rocket (De pagament) o W3 Total Cache per emmagatzemar versions estàtiques de les teves pàgines, disminuint la càrrega en el servidor. A cdmon disposem d'una eina de caché instal·lada al servidor (Vanish), que està optimitzada per funcionar amb instal·lacions WordPress. Com utilitzar l'eina de caché de cdmon.
Des del panell de control de cdmon, tens accés a eines i serveis dissenyats per optimitzar el rendiment del teu hosting, com la nostra eina de Caché Varnish que pots activar o desactivar en qualsevol moment, o també pots augmentar la versió de PHP a una versió més recent per buscar la màxima optimització.
Optimitzar les peticions wc-ajax=get_refreshed_fragments i altres operacions AJAX en WooCommerce és crucial per mantenir el teu lloc ràpid i eficient. Seguint aquestes solucions pràctiques, podràs millorar significativament el rendiment de la teva botiga en línia, assegurant una experiència d'usuari òptima i un millor rendiment general del lloc.
Para más información, puedes contactar con nosotros.