WooCommerce est le plugin le plus populaire pour créer des boutiques en ligne dans WordPress. Ce plugin utilise la technologie AJAX pour offrir une expérience utilisateur fluide et dynamique. L'un des appels AJAX clés est wc-ajax=get_refreshed_fragments, conçu pour mettre à jour les données du panier en temps réel sans recharger toute la page. Bien qu'essentielle pour le fonctionnement du panier, cette fonctionnalité peut avoir un impact négatif sur les performances du site si elle n'est pas gérée avec soin.
Comment fonctionne wc-ajax=get_refreshed_fragments ?
Lorsque les clients ajoutent des produits au panier ou y apportent des modifications, WooCommerce effectue un appel à /?wc-ajax=get_refreshed_fragments pour mettre à jour les fragments du panier sur la page. Cela signifie que des détails tels que le nombre d'articles et le total du panier sont mis à jour instantanément sans avoir besoin de recharger la page entière.
Génération de chargements lents
Le problème commence lorsque cette requête est exécutée sur toutes les pages, même sur celles où un affichage mis à jour du panier n'est pas nécessaire. Cela peut se produire, par exemple, si le panier ou sa version mini-panier est inclus sur chaque page via un widget. Le résultat est un nombre excessif d'appels à admin-ajax.php, augmentant la charge du serveur et ralentissant l'expérience utilisateur.
Que sont les requêtes à admin-ajax.php ?
admin-ajax.php est un fichier essentiel dans WordPress qui gère les requêtes AJAX. AJAX (Asynchronous JavaScript and XML) permet la communication entre le navigateur et le serveur, permettant de mettre à jour des parties d'une page sans la recharger entièrement. WooCommerce, comme d'autres plugins et thèmes WordPress, utilise admin-ajax.php pour exécuter des opérations backend sans interrompre l'expérience utilisateur frontend.
Des requêtes excessives à admin-ajax.php, en particulier sur les sites à fort trafic ou ceux avec de nombreux éléments dynamiques, peuvent surcharger le serveur. Cela se traduit par des temps de chargement plus lents et potentiellement une moins bonne expérience utilisateur, ainsi qu'un impact négatif sur le référencement du site.
Solutions pratiques pour optimiser wc-ajax=get_refreshed_fragments
Identifier les requêtes AJAX avec Query Monitor
Pour utiliser Query Monitor, vous devez installer et activer le plugin sur votre site WooCommerce.
Query Monitor est un plugin utilisé pour la gestion des installations WordPress avec WooCommerce. Ce plugin vous permet de visualiser les requêtes AJAX sur votre site. Après avoir installé et activé Query Monitor, vous pourrez :
- Identifier les requêtes inutiles : Parcourez votre site et observez les requêtes à admin-ajax.php effectuées sur chaque page. Query Monitor affichera des détails sur ces requêtes, vous aidant à identifier lesquelles sont essentielles et lesquelles pourraient être supprimées.
- Détecter les surcharges : Portez une attention particulière aux pages qui ne nécessitent pas de mises à jour dynamiques du panier, comme les pages informatives, les articles de blog ou les sections de contact. Si ces pages génèrent des requêtes à admin-ajax.php, c'est un signe qu'elles peuvent être optimisées.
Pour tester les requêtes 'wc-ajax=get_refreshed_fragments', rendez-vous sur la page du panier de votre site web et ajoutez quelques produits au panier. Ouvrez ensuite la fenêtre de gestion du plugin et accédez aux processus WooCommerce pour les surveiller.
Utiliser la fonction disable_ajax_requests pour désactiver les requêtes
Une fois les requêtes inutiles identifiées, vous pouvez les désactiver sélectivement à l'aide d'une fonction personnalisée dans le fichier functions.php de votre thème WordPress. Pour accéder et modifier le fichier functions.php de votre thème WordPress, nous vous recommandons d'accéder à la section de gestion des thèmes depuis votre panneau d'administration WordPress.
La fonction disable_ajax_requests peut être adaptée pour désactiver les requêtes sur des pages spécifiques :
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 );
Remarque : Ce code désactive les requêtes AJAX liées au panier sur les pages qui ne sont pas essentielles au fonctionnement du panier, comme les pages de panier, de paiement ou de compte. Assurez-vous de tester votre site après avoir implémenté ces modifications pour vérifier que tout fonctionne comme prévu.
Améliorations supplémentaires des performances
En plus des requêtes AJAX, il existe d'autres stratégies que vous pouvez mettre en œuvre pour améliorer davantage les performances :
- Optimisation des images : Nous recommandons d'utiliser des plugins d'optimisation d'images pour réduire la taille des images sans perte de qualité.
- Minification des CSS et JavaScript : Des plugins tels qu'Autoptimize peuvent vous aider à minimiser et à combiner les fichiers CSS et JavaScript, réduisant ainsi les requêtes HTTP et le temps de chargement des pages.
- Utilisation de systèmes de mise en cache : Configurez correctement des plugins de cache tels que WP Rocket (payant) ou W3 Total Cache pour stocker des versions statiques de vos pages, réduisant ainsi la charge du serveur. Chez cdmon, nous fournissons un outil de cache côté serveur (Varnish) optimisé pour les installations WordPress.
Comment utiliser l'outil de cache cdmon.
Depuis le panneau de contrôle cdmon, vous avez accès à des outils et services conçus pour optimiser les performances de votre hébergement, comme notre outil Varnish Cache que vous pouvez activer ou désactiver à tout moment. Vous pouvez également passer à une version plus récente de PHP pour atteindre une optimisation maximale.
L'optimisation des requêtes wc-ajax=get_refreshed_fragments et d'autres opérations AJAX dans WooCommerce est cruciale pour maintenir votre site rapide et efficace. En suivant ces solutions pratiques, vous pouvez améliorer considérablement les performances de votre boutique en ligne, garantissant une expérience utilisateur optimale et de meilleures performances globales du site.