Aller au contenu
Rechercher
Discutons
Menu

Dossier WooCommerce · chapitre 7 sur 9

Performance et cookies : ce que WooCommerce pèse sur tout ton site

WooCommerce charge ses scripts sur tout le site, et il pose 7 cookies chez ton visiteur dès sa première page, sans le moindre clic. Au labo, on a tout pesé, page par page, puis on a ramené une page de blog de 676 à 409 Kio avec une petite extension que je te donne.

Par Sébastien GrillotTesté au labo : 19 octobre 2026Publié : 19 octobre 2026
Testé sur
WooCommerce 11.2.1 · WordPress 7.1.3
Mesure
Chromium, cache vide, 1 280 px, poids non compressé
Thème
Twenty Twenty-Five 1.5

L'essentiel en 4 points

  1. Avec WooCommerce, une page de blog passe de 8 à 29 requêtes et de 206 à 676 Kio, et met 2,4 fois plus de temps à être générée.
  2. Une extension d'une vingtaine de lignes retire ses styles et scripts des pages qui ne vendent rien : l'article retombe à 17 requêtes et 409 Kio, sans toucher à la boutique.
  3. L'attribution de commande pose 7 cookies sbjs_ à la première page vue, avant tout consentement. Coupe-la, ou fais-la passer par ton outil de consentement.
  4. Exclus du cache de pages le panier, la commande et le compte client, et les visiteurs qui portent les cookies du panier.

7.1Ce que pèse WooCommerce, page par page

On a mesuré chaque type de page du labo avec Chromium, cache vide, en comptant tout ce que le navigateur télécharge. Le poids est donné sans compression : sur ton hébergement, le transfert réel sera plus léger, mais les écarts entre pages restent les mêmes.

Le labo avec Twenty Twenty-Five et WooCommerce 11.2.1 (MariaDB, 19 octobre 2026)
PageRequêtesPoidsScriptsRequêtes SQL
Accueil, avant WooCommerce6185 Kio423
Accueil27656 Kio1768
Article de blog, avant WooCommerce8206 Kio529
Article de blog29676 Kio1861
Boutique38778 Kio1988
Catégorie35708 Kio1976
Fiche produit simple (mug)44835 Kio2376
Fiche produit variable (t-shirt)48916 Kio2783
Panier vide872 957 Kio6995
Validation de la commande882 957 Kio69—
Mon compte30744 Kio1955

Trois lignes sautent aux yeux. L'accueil et l'article, qui ne vendent rien, ont triplé. Les fiches produit sont lourdes, ce qui est plus normal : galerie, zoom, choix des variations. Et le panier, vide, charge 69 scripts pour près de 3 Mio : les blocs du panier et de la commande se découpent en dizaines de petits fichiers.

Le panier et la commande, je ne m'en inquiète pas trop : seuls les acheteurs y vont, et ils ont déjà décidé. Ce qui me gêne, c'est le blog. Tes articles sont souvent la porte d'entrée de ta boutique, ceux qui arrivent depuis Google. Ils paient le prix d'une boutique qu'ils ne regardent pas encore.

Le temps de génération

Côté serveur, on a mesuré le temps que met WordPress à fabriquer la page, sept fois de suite, avec puis sans WooCommerce (désactivé le temps de la mesure). Médianes : 0,13 s sans et 0,32 s avec pour l'accueil, 0,14 s sans et 0,34 s avec pour l'article. Environ 2,4 fois plus.

En valeur absolue, ces temps ne disent rien de ton hébergement : le labo tourne en local. Mais le rapport, lui, est parlant, et il plaide pour un cache de pages, on y vient plus bas.

7.2Ce que WooCommerce charge sur une page de blog

Sur l'article du labo, voilà ce que WooCommerce ajoute :

  • des feuilles de style : woocommerce.css, woocommerce-layout.css, woocommerce-smallscreen.css, woocommerce-blocktheme.css, plus celles des blocs (wc-blocks.css, packages-style.css, mini-cart-contents.css) ;
  • jQuery et ses compagnons (jquery-migrate, blockUI, js-cookie), les scripts woocommerce.js et add-to-cart.js ;
  • les blocs de l'en-tête, le mini-panier et le compte client, que WooCommerce a ajoutés tout seul au thème ;
  • l'attribution de commande : sourcebuster.js et order-attribution.js, et leurs 7 cookies.

Le mini-panier et l'icône de compte, je les garde : ils servent à quelqu'un qui a déjà un article dans son panier et qui lit ton blog. Le reste n'a rien à faire sur une page qui ne vend rien.

7.3Une petite extension pour alléger le blog

Voici l'extension qu'on a testée au labo. Elle retire les styles et scripts « classiques » de WooCommerce sur toutes les pages qui ne sont ni la boutique, ni un produit, ni une catégorie, ni le panier, ni la commande, ni le compte client.

<?php
/**
 * Plugin Name: Boutique allégée
 * Description: Retire les styles et scripts « classiques » de WooCommerce des pages qui ne vendent rien (blog, pages).
 * Version: 1.0.0
 */

add_action(
	'wp_enqueue_scripts',
	function () {
		if ( ! function_exists( 'is_woocommerce' ) || is_woocommerce() || is_cart() || is_checkout() || is_account_page() ) {
			return;
		}
		foreach ( array( 'woocommerce-general', 'woocommerce-layout', 'woocommerce-smallscreen', 'woocommerce-blocktheme' ) as $style ) {
			wp_dequeue_style( $style );
		}
		foreach ( array( 'woocommerce', 'wc-add-to-cart', 'wc-cart-fragments', 'sourcebuster-js', 'wc-order-attribution' ) as $script ) {
			wp_dequeue_script( $script );
		}
	},
	99
);
wp-content/plugins/boutique-allegee/boutique-allegee.php : testée au labo sur WooCommerce 11.2.1

Crée le dossier, colle le fichier, et active « Boutique allégée » dans tes extensions. Pas besoin de toucher à ton thème.

Testé au labo : avant et après l'extension (Twenty Twenty-Five)
PageAvantAprès
Accueil27 requêtes · 656 Kio15 requêtes · 389 Kio
Article de blog29 requêtes · 676 Kio17 requêtes · 409 Kio
Boutique38 requêtes · 778 Kioinchangée
Fiche produit44 requêtes · 835 Kioinchangée
Panier87 requêtes · 2 957 Kioinchangé

Cookies déposés sur l'article : 7 avant, 0 après. Le mini-panier et le compte client de l'en-tête restent en place, avec leurs scripts.

Il y a un prix, et je préfère te le dire : l'attribution de commande ne voit plus le visiteur tant qu'il est sur le blog. Elle démarre à sa première page de boutique. Si tu as besoin de savoir qu'une commande vient d'un article précis, cette extension te prive de l'information. Pour moi, c'est un très bon échange.

Et si tu construis ton propre thème, le même code peut vivre dans son functions.php : c'est le dernier chapitre du dossier thème.

7.4Les 7 cookies de l'attribution de commande

C'est la mesure qui me gêne le plus. Au labo, un visiteur qui arrive sur l'accueil, sans rien toucher, repart avec 7 cookies : sbjs_current, sbjs_current_add, sbjs_first, sbjs_first_add, sbjs_migrations, sbjs_session et sbjs_udata. Ils viennent de l'« attribution de commande », une fonction de WooCommerce activée d'origine.

D'après la documentation de l'attribution de commande, ces cookies retiennent d'où vient le visiteur (site d'origine, paramètres UTM de tes campagnes), son type d'appareil et le nombre de pages vues. Les données ne sont enregistrées dans WooCommerce que si une commande est passée, et les cookies expirent avec la session. C'est ce qu'on a retrouvé dans la commande n° 24 : origine « Direct », appareil « Ordinateur », 6 pages vues.

Commande n° 24 dans l'administration de WooCommerce : détail des articles avec leur prix hors taxe et leur TVA, et à droite l'encadré Attribution de Commande avec l'origine Direct, le type d'appareil Ordinateur et 6 pages vues par session
La commande n° 24 et son encadré « Attribution de commande », à droite. Capture du labo, 18 octobre 2026.

Et le consentement ?

La règle française, rappelée par la CNIL : « Tant que la personne n'a pas donné son consentement, les cookies ne peuvent pas être déposés ou lus sur son terminal. » Avec des exemptions, dont deux qui concernent une boutique : les traceurs « destinés à garder en mémoire le contenu d'un panier d'achat sur un site marchand », et ceux « destinés à l'authentification ». La mesure d'audience peut aussi être exemptée, mais à des conditions strictes, dont celle de « servir à produire des données statistiques anonymes uniquement ».

Les trois cookies du panier (woocommerce_cart_hash, woocommerce_items_in_cart et wp_woocommerce_session_), au labo, ne sont apparus qu'après l'ajout d'un produit au panier. Ils entrent dans l'exemption du panier.

Les 7 cookies sbjs_, eux, ne servent ni au panier ni à l'authentification. Et ils ne produisent pas une statistique anonyme : ils rattachent une source à une commande, donc à un client. À mes yeux, ils demandent un consentement. WooCommerce a d'ailleurs reconnu le problème : dans un billet de janvier 2024, l'équipe écrivait que des marchands européens avaient pu se retrouver en défaut à cause de l'activation par défaut de cette fonction. Depuis, elle est compatible avec la WP Consent API, que gèrent certains outils de consentement.

Réglages de WooCommerce, Avancé, Fonctionnalités : stockage des commandes haute performance sélectionné, WooCommerce Analytics coché, Rétractation de commande décochée, Attribution de commande cochée
WooCommerce > Réglages > Avancé > Fonctionnalités : l'attribution de commande y est cochée d'origine. Capture du labo, 18 octobre 2026.

Un tiers caché dans la galerie

Petite trouvaille du labo, pour finir sur ce sujet. La loupe de la galerie produit est un emoji, 🔍. Sur le navigateur du labo, le script emoji de WordPress l'a remplacé par une image téléchargée sur s.w.org, un serveur de WordPress.org. Résultat : une requête vers un site tiers depuis chaque fiche produit. Ça ne pose aucun cookie, mais ça transmet l'adresse IP du visiteur à un autre serveur. Si tu traques les tiers, c'est le script emoji de WordPress qu'il faut désactiver.

7.5Le cache de pages

Pour rattraper les 0,2 seconde que coûte WooCommerce à chaque page, la réponse classique est un cache de pages : ton hébergeur ou une extension garde une copie toute prête de chaque page. Sauf qu'une boutique a des pages qui ne doivent jamais être servies en copie.

La documentation de WooCommerce sur les extensions de cache en liste trois : le panier, le compte client et la commande, parce qu'elles affichent des informations propres à chaque client. Et trois cookies à exclure : woocommerce_cart_hash, woocommerce_items_in_cart et wp_woocommerce_session_. Concrètement : un visiteur qui a quelque chose dans son panier ne doit plus recevoir de pages en cache. Sinon, ton mini-panier affiche le panier d'un autre.

Beaucoup d'extensions de cache le font seules, la documentation le dit d'ailleurs. Vérifie quand même : ajoute un produit au panier, ouvre une autre page, et regarde si le compteur du mini-panier suit.

Côté réglages, ce qu'on a relevé (Avancé > Fonctionnalités)

  • « Mettre en cache les produits » : cochée d'origine, présentée comme une option de performance.
  • « Mise en cache des données HPOS » : décochée, recommandée par WooCommerce pour les boutiques qui utilisent un cache objet.
  • « Effacer les sessions clients si vide » : fonctionnalité expérimentale, décochée, qui supprime le cookie de session des visiteurs au panier vide pour faciliter le cache de pages.

Pour finir ce chapitre, un rappel qui date de 2018 et qui n'a pas pris une ride. Dans mon environnement de test WooCommerce, je faisais tourner la boutique sur la dernière version de PHP, pour une question de performances. En 2026, la documentation de WooCommerce conseille PHP 8.3 : c'est souvent le gain le plus simple, un réglage chez ton hébergeur.

Une boutique légère, c'est bien. Une boutique que Google comprend, c'est mieux : place au référencement.

Sources

Historique de ce chapitre

  • 19 octobre 2026 : première version, mesures sur WooCommerce 11.2.1.
Sébastien Grillot

Co-fondateur de Kōeki · Consultant SEO et IA

Sébastien Grillot

Consultant SEO depuis 2009 : c'est ici, sur Inside da WeB, qu'il a monté sa première agence, spécialisée dans l'e-commerce sous WordPress. Depuis 2021, il accompagne les e-commerçants avec Kōeki.

FermerCommande n° 24 dans l'administration de WooCommerce : détail des articles avec leur prix hors taxe et leur TVA, et à droite l'encadré Attribution de Commande avec l'origine Direct, le type d'appareil Ordinateur et 6 pages vues par session
FermerRéglages de WooCommerce, Avancé, Fonctionnalités : stockage des commandes haute performance sélectionné, WooCommerce Analytics coché, Rétractation de commande décochée, Attribution de commande cochée