HUSKY - Product Filter for WooCommerce

Come accelerare il filtraggio dei prodotti WooCommerce su grandi cataloghi con HUSKY

Come accelerare il filtraggio dei prodotti WooCommerce su grandi cataloghi con HUSKY

Quando un negozio WooCommerce cresce oltre diverse migliaia di prodotti, il filtro prodotti può diventare un collo di bottiglia. Ogni termine di tassonomia richiede una query di conteggio, ogni attributo aggiunge un JOIN, e il riconteggio dinamico moltiplica il lavoro del database. HUSKY (precedentemente WOOF) include diversi meccanismi di caching integrati e hook progettati specificamente per grandi cataloghi.

Abilita Cache del Riconteggio Dinamico

In HUSKY → Avanzate → Opzioni troverai l'impostazione Cache del numero di riconteggio dinamico per ogni elemento nel filtro. Quando abilitata, HUSKY memorizza i risultati del riconteggio per ogni termine nella tabella delle opzioni di WordPress o come transient, in modo che i caricamenti di pagina successivi saltino completamente le query di conteggio. Questa è la singola opzione più efficace per i negozi che utilizzano il riconteggio dinamico con molti termini di tassonomia.

La cache viene cancellata in base a una pianificazione, non in base alle modifiche dei prodotti. L'intervallo è impostato dall'opzione di pulizia automatica accanto all'impostazione della cache (la scadenza predefinita è una settimana). Dopo aver aggiunto o importato un lotto di prodotti, puoi svuotarla manualmente con il pulsante cancella cache nel pannello di amministrazione.

Abilita Cache dei Termini

Accanto alla cache di riconteggio c'è l'impostazione Cache dei termini. Quando il modulo di filtro contiene un gran numero di termini (centinaia di categorie di prodotti, attributi o tag), questa opzione memorizza nella cache l'elenco dei termini renderizzati in modo che l'HTML non debba essere ricostruito a ogni caricamento di pagina.

Funziona allo stesso modo della cache di riconteggio: cancellata in base a una pianificazione, con il proprio intervallo di pulizia automatica e un pulsante cancella cache dei termini nell'amministrazione. Per i negozi con alberi di categorie profondamente annidati o molti valori di attributi, abilitare entrambe le cache insieme riduce sostanzialmente il carico del database per richiesta.

Usa la Modalità Turbo per i Dati dei Prodotti Pre-Generati

Modalità Turbo è l'ottimizzazione più potente che HUSKY offre per i grandi cataloghi. Quando abilitata, pre-genera un file di dati JSON con i parametri dei prodotti. Invece di costruire ed eseguire complesse WP_Query + tax_query + meta_query a ogni richiesta di filtro, il plugin legge dati pre-calcolati — nei grandi cataloghi la differenza nel tempo di risposta è sostanziale.

La Modalità Turbo è configurata in HUSKY → Estensioni → Modalità Turbo. La rigenerazione del file può essere programmata tramite cron di WordPress o, per affidabilità, tramite un crontab reale del server (vedi le FAQ sulla configurazione del cron della Modalità Turbo).

Regola il Limite dei Prodotti della Modalità Turbo

Per impostazione predefinita, la Modalità Turbo elabora fino a 15.000 prodotti durante la generazione della cache. Nei negozi con più prodotti, la generazione si interrompe prima che tutti i prodotti siano indicizzati. Usa l'hook woof_turbo_mode_products_limit per aumentare questo limite:

add_filter('woof_turbo_mode_products_limit', function($limit) {
    // Increase limit for catalogs larger than 15,000 products
    return 50000;
});

L'hook si trova in ext/turbo_mode/index.php. Imposta il valore abbastanza alto da coprire l'intero catalogo, ma fai attenzione ai limiti di tempo di esecuzione PHP e di memoria durante la generazione del file.

Ottimizza il Metodo di Conteggio per Siti Grandi

Il sistema di riconteggio dinamico utilizza un contatore basato su WP_Query che può consumare una quantità significativa di memoria nei negozi con molti prodotti. L'hook woof_counter_method (fonte: classes/counter.php) ti permette di passare a un metodo di conteggio più leggero che imposta nopaging=false e posts_per_page=1, riducendo la memoria per query:

add_filter('woof_counter_method', function($saving_memory) {
    // Enable memory-saving counter mode
    return true;
});

Testa questo prima sul tuo sito di staging — funziona bene su alcune configurazioni ma non su tutte.

Personalizza l'Output dei Prodotti con woof_products_query

L'hook filtro woof_products_query (fonte: index.php) passa l'array $query_args dello shortcode [woof_products] prima che venga eseguito il suo WP_Query. Usalo per aggiungere query meta personalizzate, escludere determinati prodotti dall'output o regolare la struttura della query:

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;
});

Per manipolazioni a livello di tassonomia (cambiare gli operatori di relazione tra tassonomie), usa l'hook correlato woof_main_query_tax_relations.

Abilita la Cache degli Oggetti di WordPress per i Dati del Filtro

HUSKY supporta l'hook woof_use_wp_cache per instradare i suoi dati interni attraverso la cache degli oggetti di WordPress. Se utilizzi già un backend di cache degli oggetti persistente (Redis, Memcached), abilitare questo hook sposta i dati del filtro fuori dal database e in una memoria veloce in-RAM:

add_filter('woof_use_wp_cache', function($is){
    return true;
});

Importante: Questo hook non ha effetto senza un plugin di caching degli oggetti persistente installato. Non è un sostituto delle impostazioni di cache integrate — le integra quando il tuo ambiente di hosting supporta il caching degli oggetti.

Combina le Impostazioni per i Migliori Risultati

La linea di base consigliata per un catalogo di grandi dimensioni (10.000+ prodotti, molti termini di tassonomia):

  • Abilita Cache del riconteggio dinamico e Cache dei termini in Avanzate → Opzioni
  • Abilita la Modalità Turbo e imposta il limite dei prodotti in base alla dimensione del tuo catalogo
  • Applica woof_use_wp_cache se è disponibile una cache degli oggetti persistente
  • Testa woof_counter_method in staging per vedere se la modalità di risparmio memoria funziona per la tua configurazione
  • Usa woof_products_query solo quando hai bisogno di regolare la query di output di [woof_products]

Inizia con le due opzioni di cache integrate — non richiedono modifiche al codice e da sole offrono il miglioramento più evidente.