Comment accélérer le filtrage des 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 taxonomy term nécessite une count query, chaque attribute ajoute un join, et Dynamic Recount multiplie le travail de la base de données. HUSKY (anciennement WOOF) inclut plusieurs mécanismes de caching et hooks intégrés conçus spécifiquement pour les grands catalogues. Cet article ne couvre que les fonctionnalités qui existent dans le code source du plugin — pas de paramètres hypothétiques, pas de hooks inventés.
Activer Cache Dynamic Recount
Dans HUSKY → Avancé → Options, vous trouverez le paramètre Cache dynamic recount number for each item in filter. Lorsqu'il est activé, HUSKY stocke les résultats du recount pour chaque term dans la table d'options de WordPress ou comme un transient, de sorte que les chargements de page ultérieurs ignorent complètement les counting queries. C'est le commutateur le plus efficace pour les boutiques utilisant Dynamic Recount avec de nombreux taxonomy terms.
Le cache est vidé selon un calendrier, et non lors des changements de produits. L'intervalle est défini par l'option d'auto-nettoyage à 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 clear cache dans le panneau d'administration.
Activer Cache Terms
À côté du recount cache se trouve le paramètre Cache terms. Lorsque le formulaire de filtre contient un grand nombre de terms (des centaines de catégories de produits, attributes ou tags), cette option met en cache la liste de terms 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 recount cache : vidé selon un calendrier, avec son propre intervalle d'auto-nettoyage et un bouton clear terms cache dans l'admin. Pour les boutiques avec des arborescences de catégories profondément imbriquées ou de nombreuses attribute values, l'activation des deux caches ensemble réduit considérablement la charge de la base de données par requête.
Utiliser Turbo Mode pour les données de produits pré-générées
Turbo Mode est l'optimisation la plus puissante que HUSKY offre pour les grands catalogues. Lorsqu'il est activé, il pré-génère un flat file contenant les product IDs filtrés pour chaque combinaison de active terms. Au lieu de construire et d'exécuter des WP_Query + tax_query + meta_query complexes à chaque filter request, le plugin lit un fichier pré-calculé — la différence de temps de réponse est souvent d'un ordre de grandeur.
Turbo Mode est configuré sous HUSKY → Extensions → Turbo Mode. La régénération du fichier peut être planifiée via WordPress cron ou, pour plus de fiabilité, via un crontab de serveur réel (voir la FAQ sur la configuration de Turbo Mode cron).
Ajuster la limite de produits de Turbo Mode
Par défaut, Turbo Mode traite jusqu'à 15,000 produits pendant 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 ne soient indexés. Utilisez le woof_turbo_mode_products_limit hook 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 est situé dans ext/turbo_mode/index.php:277. Définissez la valeur suffisamment élevée pour couvrir l'ensemble de votre catalogue, mais soyez attentif au PHP execution time et aux memory limits pendant la génération du fichier.
Optimiser le Counter Method pour les grands sites
Le système Dynamic Recount utilise un compteur basé sur WP_Query qui peut consommer une mémoire significative sur les boutiques avec de nombreux produits. Le woof_counter_method hook (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 query au prix de comptages potentiellement moins précis :
add_filter('woof_counter_method', function($saving_memory) {
// Enable memory-saving counter mode
return true;
});
Testez cela d'abord sur votre site staging — cela fonctionne bien sur certaines configurations mais pas toutes.
Personnaliser la Filter Query avec woof_products_query
Le woof_products_query filter hook (source : index.php) passe le tableau complet $query_args avant l'exécution de la WP_Query. Utilisez-le pour ajouter des custom meta queries, exclure certains produits ou ajuster la query structure pour les performances :
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 de la taxonomy (modification des relation operators entre taxonomies), utilisez le woof_main_query_tax_relations hook associé.
Activer WordPress Object Cache pour les données de filtre
HUSKY prend en charge le woof_use_wp_cache hook pour acheminer ses données internes via le WordPress object cache. Si vous utilisez déjà un persistent object cache backend (Redis, Memcached), l'activation de ce hook déplace les données de filtre hors de la base de données et vers un stockage rapide en mémoire :
add_filter('woof_use_wp_cache', function($is){
return true;
});
Important : Ce hook n'a aucun effet sans un plugin de persistent object caching 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 l'object caching.
Combiner les paramètres pour de meilleurs résultats
La base recommandée pour un grand catalogue (plus de 10,000 produits, de nombreux taxonomy terms) :
- Activer Cache dynamic recount et Cache terms dans Avancé → Options
- Activer Turbo Mode et définir la limite de produits pour correspondre à la taille de votre catalogue
- Appliquer
woof_use_wp_cachesi un persistent object cache est disponible - Tester
woof_counter_methodsur staging pour voir si le mode d'économie de mémoire fonctionne pour votre configuration - Utiliser
woof_products_queryuniquement lorsque vous devez exclure des produits spécifiques des résultats du filtre
Commencez par les deux commutateurs de cache intégrés — ils ne nécessitent aucune modification de code et offrent l'amélioration la plus notable à eux seuls.