Lenteur WordPress et WooCommerce, comment désactiver wc-ajax=get_refreshed_fragments ?
Temps de lecture : 5 minutes
Vous avez constaté des lenteurs sur votre site marchand réalisé avec WordPress et WooCommerce.
En faisant audit de performance avec GTMetrix ou la console de développement de Google Chrome vous avez identifié l’un des coupables : Woocommerce Cart Fragments qui effectue des requêtes sur admin-ajax.php « /?wc-ajax=get_refreshed_fragments » et qui a pour conséquence d’ajouter du temps de chargement de page (allant de quelques millisecondes à plusieurs secondes)
Comment désactiver la requête wc-ajax=get_refreshed_fragments ?
Désactiver la requête wc-ajax=get_refreshed_fragments est particulièrement utile pour améliorer le temps d’affichage de votre site si votre boutique n’est pas en page d’accueil, que vous n’avez pas de produits dans vos pages « corporate » ou articles et billets de blog.
Avec un thème enfant : Ajoutez ce code au fichier functions.php(1) :
<?php
add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);
function dequeue_woocommerce_cart_fragments() { if ( is_front_page() || is_single() || is_category() || is_tag() ) wp_dequeue_script('wc-cart-fragments'); }
}
Via votre propre plugin : vous pouvez passer par un plugin « maison » à mettre dans le dossier mu-plugins (Must Use) :
- Créez un sous-dossier mu-plugins dans /wp-content/ :
/wp-content/mu-plugins/ - Dans votre dossier mu-plugins, créez un fichier opti-woo.php :
/wp-content/mu-plugin/opti-woo.php - Dans ce fichier copiez le code ci dessous :
<?php
/**
* Plugin Name: Opti Woo
* Description: Chargement conditionnel de wc-cart-fragments
* Author: Agence WebPlus
* License: GNU General Public License v3 or later
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
*/
// Empêcher l'accès direct à ce fichier
defined( 'ABSPATH' ) or die( 'Circulez !' );
/**
* Fonction permettant de délister wc-cart-fragments sur la page d'accueil, articles de blog...
*/
add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);
function dequeue_woocommerce_cart_fragments() {
if ( is_front_page() || is_single() || is_category() || is_tag() ) wp_dequeue_script('wc-cart-fragments');
}
Résultats obtenus lors de notre benchmark
Comme point de départ pour nos mesures, nous avons utilisé notre site de benchmark WooCommerce hébergé sur notre propre architecture réseau basée en France.
Le site était déjà ultra rapide (optimisé par nos soins avec une mise en cache efficace des ressources statiques et dynamiques). Le test initial (avec wc-cart-fragments) réalisé sur GTMetrix montre un temps de chargement de 0.8s depuis Londres :
Une fois wc-cart-fragments désactivé sur la page d’accueil; nous avons constaté un temps de chargement divisé par 2 comme le montre le test GTMetrix avec seulement 424ms soit moins d’une demi seconde pour afficher le site depuis Londres :
Bonus
Si vous avez un site corporate (vitrine) avec une boutique en ligne qui ne se trouve pas en page d’accueil, vous pouvez exclure le chargement des ressources (feuilles de style .css et scripts .js) des pages où elles n’ont pas raison d’être :
<?php
add_action( 'wp_enqueue_scripts', 'optimize_woocommerce_styles_scripts', 99 );
function optimize_woocommerce_styles_scripts() {
remove_action( 'wp_head', array( $GLOBALS['woocommerce'], 'generator' ) );
if ( function_exists( 'is_woocommerce' ) ) {
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
wp_dequeue_style( 'woocommerce_frontend_styles' );
wp_dequeue_style( 'woocommerce_fancybox_styles' );
wp_dequeue_style( 'woocommerce_chosen_styles' );
wp_dequeue_style( 'woocommerce_prettyPhoto_css' );
wp_dequeue_script( 'wc_price_slider' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-add-to-cart' );
wp_dequeue_script( 'wc-cart-fragments' );
wp_dequeue_script( 'wc-checkout' );
wp_dequeue_script( 'wc-add-to-cart-variation' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-cart' );
wp_dequeue_script( 'wc-chosen' );
wp_dequeue_script( 'woocommerce' );
wp_dequeue_script( 'prettyPhoto' );
wp_dequeue_script( 'prettyPhoto-init' );
wp_dequeue_script( 'jquery-blockui' );
wp_dequeue_script( 'jquery-placeholder' );
wp_dequeue_script( 'fancybox' );
wp_dequeue_script( 'jqueryui' );
}
}
}
Mise en garde
Ces techniques d’optimisation s’adressent à des utilisateurs avertis ou expérimentés. En fonction du thème et des plugins que vous utilisez, l’utilisation de ces fragments de code peut rendre votre site inopérant. L’Agence WebPlus® ne saurait être tenue responsable pour les éventuels dommages ou pertes financières causées par l’implémentation de tout ou partie de ce billet de blog sur votre site, sans l’avis d’un expert. En cas de doute, demandez-nous un audit de votre site.
En conclusion
WordPress est un CMS fabuleux pour la création de site Internet. Accessible, facile à prendre en main et personnalisable à souhait. Il est le système de gestion de contenu préféré des éditeurs pour publier du contenu sur Internet : Sites vitrines, blogs, site marchands… les possibilités sont quasiment infinies.
WordPress ne nécessite aucune connaissance technique(2)(3) particulière. Cette facilité incite de nombreuses personnes à se lancer dans l’aventure en ligne, que ce soit pour publier des recettes, des conseils et astuces, promouvoir leur entreprise ou étendre leur zone de chalandise avec un site e-commerce.
Cependant, développer sa présence en ligne de manière efficace et surtout économiquement viable demande :
- Soit des connaissances techniques avancées
- Soit de se faire accompagner par des professionnels, et ça tombe bien, sur ce point nous pouvons vous aider.
Notes de bas de page
- Sources utiles à la rédaction de cet article Webnots et LittleBizzy.
- OVHcloud propose par exemple des offres d’hébergement avec WordPress pré-installé.
- De nombreux guides, tutoriels et formations sont disponibles en ligne pour prendre en main ou personnaliser WordPress.