Comment accélérer le filtrage de produits WooCommerce sur les grands catalogues avec HUSKY
Lorsqu’une boutique WooCommerce dépasse plusieurs milliers de produits, le filtre de produits peut devenir un goulot d’étranglement. Chaque terme de taxonomie nécessite une requête de comptage, chaque attribut ajoute une jointure, et le recomptage dynamique multiplie le travail de la base de données. HUSKY (anciennement WOOF) inclut plusieurs mécanismes de cache intégrés et des hooks conçus spécifiquement pour les grands catalogues.
Activer le cache de recomptage dynamique
Dans HUSKY → Advanced → Options, vous trouverez le paramètre Cache du nombre de recomptage dynamique pour chaque élément du filtre. Lorsqu’il est activé, HUSKY stocke les résultats du recomptage pour chaque terme dans la table d’options de WordPress ou comme une donnée temporaire (transient), de sorte que les chargements de page ultérieurs ignorent complètement les requêtes de comptage. C’est l’interrupteur le plus efficace pour les boutiques utilisant le recomptage dynamique avec de nombreux termes de taxonomie.
Le cache est vidé selon un calendrier, et non lors des modifications de produits. L’intervalle est défini par l’option de nettoyage automatique à côté du paramètre de cache (l’expiration par défaut est d’une semaine). Après avoir ajouté ou importé un lot de produits, vous pouvez le vider manuellement avec le bouton vider le cache dans le panneau d’administration.
Activer le cache des termes
À côté du cache de recomptage se trouve le paramètre Cache des termes. Lorsque le formulaire de filtre contient un grand nombre de termes (des centaines de catégories de produits, d’attributs ou d’étiquettes), cette option met en cache la liste des termes rendue afin que le HTML n’ait pas besoin d’être reconstruit à chaque chargement de page.
Il fonctionne de la même manière que le cache de recomptage : vidé selon un calendrier, avec son propre intervalle de nettoyage automatique et un bouton vider le cache des termes dans l’administration. Pour les boutiques avec des arbres de catégories profondément imbriqués ou de nombreuses valeurs d’attributs, activer les deux caches ensemble réduit considérablement la charge de base de données par requête.
Utiliser le mode Turbo pour les données produits pré‑générées
Le mode Turbo est l’optimisation la plus puissante offerte par HUSKY pour les grands catalogues. Lorsqu’il est activé, il pré‑génère un fichier de données JSON avec les paramètres des produits. Au lieu de construire et d’exécuter des WP_Query + tax_query + meta_query complexes à chaque requête de filtre, le plugin lit des données pré‑calculées — sur les grands catalogues, la différence de temps de réponse est substantielle.
Le mode Turbo est configuré sous HUSKY → Extensions → Turbo Mode. La régénération du fichier peut être planifiée via le cron de WordPress ou, pour plus de fiabilité, via un vrai crontab serveur (voir la FAQ sur la configuration du cron du mode Turbo).
Ajuster la limite de produits du mode Turbo
Par défaut, le mode Turbo traite jusqu’à 15 000 produits lors de la génération du cache. Sur les boutiques avec plus de produits, la génération s’arrête avant que tous les produits soient indexés. Utilisez le hook woof_turbo_mode_products_limit pour augmenter cette limite :
add_filter('woof_turbo_mode_products_limit', function($limit) {
// Increase limit for catalogs larger than 15,000 products
return 50000;
});
Le hook se trouve dans ext/turbo_mode/index.php. Définissez la valeur suffisamment haute pour couvrir l’ensemble de votre catalogue, mais soyez attentif aux limites de temps d’exécution PHP et de mémoire lors de la génération du fichier.
Optimiser la méthode de comptage pour les grands sites
Le système de recomptage dynamique utilise un compteur basé sur WP_Query qui peut consommer beaucoup de mémoire sur les boutiques avec de nombreux produits. Le hook woof_counter_method (source : classes/counter.php) vous permet de passer à une méthode de comptage plus légère qui définit nopaging=false et posts_per_page=1, réduisant la mémoire par requête :
add_filter('woof_counter_method', function($saving_memory) {
// Enable memory-saving counter mode
return true;
});
Testez ceci d’abord sur votre site de staging — il fonctionne bien sur certaines configurations mais pas toutes.
Personnaliser la sortie des produits avec woof_products_query
Le hook de filtre woof_products_query (source : index.php) passe le tableau $query_args du shortcode [woof_products] avant l’exécution de son WP_Query. Utilisez‑le pour ajouter des requêtes meta personnalisées, exclure certains produits de la sortie, ou ajuster la structure de la requête :
add_filter('woof_products_query', function($query_args) {
// Exclude products that should never appear in filter results
$query_args['meta_query'][] = array(
'key' => '_exclude_from_filter',
'compare' => 'NOT EXISTS'
);
return $query_args;
});
Pour les manipulations au niveau des taxonomies (changement des opérateurs de relation entre les taxonomies), utilisez le hook associé woof_main_query_tax_relations.
Activer le cache d’objets WordPress pour les données de filtre
HUSKY prend en charge le hook woof_use_wp_cache pour router ses données internes via le cache d’objets WordPress. Si vous utilisez déjà un backend de cache d’objets persistant (Redis, Memcached), l’activation de ce hook déplace les données de filtre de la base de données vers un stockage mémoire rapide :
add_filter('woof_use_wp_cache', function($is){
return true;
});
Important : Ce hook n’a aucun effet sans un plugin de cache d’objets persistant installé. Il ne remplace pas les paramètres de cache intégrés — il les complète lorsque votre environnement d’hébergement prend en charge le cache d’objets.
Combiner les paramètres pour de meilleurs résultats
La base recommandée pour un grand catalogue (10 000+ produits, de nombreux termes de taxonomie) :
- Activer Cache de recomptage dynamique et Cache des termes dans Advanced → Options
- Activer le mode Turbo et définir la limite de produits pour correspondre à la taille de votre catalogue
- Appliquer
woof_use_wp_cachesi un cache d’objets persistant est disponible - Tester
woof_counter_methodsur le site de staging pour voir si le mode d’économie de mémoire fonctionne pour votre configuration - Utiliser
woof_products_queryuniquement lorsque vous devez ajuster la requête de sortie de [woof_products]
Commencez par les deux interrupteurs de cache intégrés — ils ne nécessitent aucune modification de code et offrent l’amélioration la plus notable par eux‑mêmes.