Como acelerar a filtragem de produtos WooCommerce em grandes catálogos com HUSKY
Quando uma loja WooCommerce cresce além de vários milhares de produtos, o filtro de produtos pode se tornar um gargalo. Cada termo de taxonomia precisa de uma consulta de contagem, cada atributo adiciona uma junção, e a recontagem dinâmica multiplica o trabalho do banco de dados. HUSKY (anteriormente WOOF) inclui vários mecanismos de cache e hooks integrados, projetados especificamente para grandes catálogos.
Ativar Cache de Recontagem Dinâmica
Em HUSKY → Avançado → Opções você encontrará a configuração Cache do número de recontagem dinâmica para cada item no filtro. Quando ativado, o HUSKY armazena os resultados da recontagem para cada termo na tabela de opções do WordPress ou como um transient, para que os carregamentos de página subsequentes ignorem completamente as consultas de contagem. Esta é a opção mais eficaz para lojas que usam Recontagem Dinâmica com muitos termos de taxonomia.
O cache é limpo em um cronograma, não em alterações de produtos. O intervalo é definido pela opção de limpeza automática ao lado da configuração de cache (a expiração padrão é de uma semana). Após adicionar ou importar um lote de produtos, você pode limpá-lo manualmente com o botão limpar cache no painel administrativo.
Ativar Cache de Termos
Ao lado do cache de recontagem está a configuração Cache de termos. Quando o formulário de filtro contém um grande número de termos (centenas de categorias de produtos, atributos ou tags), esta opção armazena em cache a lista de termos renderizada para que o HTML não precise ser reconstruído a cada carregamento de página.
Funciona da mesma forma que o cache de recontagem: limpo em um cronograma, com seu próprio intervalo de limpeza automática e um botão limpar cache de termos no admin. Para lojas com árvores de categorias profundamente aninhadas ou muitos valores de atributos, ativar ambos os caches juntos reduz substancialmente a carga do banco de dados por requisição.
Usar Modo Turbo para Dados de Produtos Pré-gerados
Modo Turbo é a otimização mais poderosa que o HUSKY oferece para grandes catálogos. Quando ativado, ele pré-gera um arquivo de dados JSON com parâmetros de produtos. Em vez de construir e executar complexas WP_Query + tax_query + meta_query em cada requisição de filtro, o plugin lê dados pré-computados — em catálogos grandes, a diferença no tempo de resposta é substancial.
O Modo Turbo é configurado em HUSKY → Extensões → Modo Turbo. A regeneração do arquivo pode ser agendada via cron do WordPress ou, para confiabilidade, via um crontab real do servidor (veja o FAQ sobre configuração do cron do Modo Turbo).
Ajustar o Limite de Produtos do Modo Turbo
Por padrão, o Modo Turbo processa até 15.000 produtos durante a geração do cache. Em lojas com mais produtos, a geração para antes que todos os produtos sejam indexados. Use o hook woof_turbo_mode_products_limit para aumentar este limite:
add_filter('woof_turbo_mode_products_limit', function($limit) {
// Increase limit for catalogs larger than 15,000 products
return 50000;
});
O hook está localizado em ext/turbo_mode/index.php. Defina o valor alto o suficiente para cobrir todo o seu catálogo, mas esteja atento aos limites de tempo de execução e memória do PHP durante a geração do arquivo.
Otimizar o Método de Contagem para Grandes Sites
O sistema de recontagem dinâmica usa um contador baseado em WP_Query que pode consumir memória significativa em lojas com muitos produtos. O hook woof_counter_method (fonte: classes/counter.php) permite que você mude para um método de contagem mais leve que define nopaging=false e posts_per_page=1, reduzindo a memória por consulta:
add_filter('woof_counter_method', function($saving_memory) {
// Enable memory-saving counter mode
return true;
});
Teste isso em seu site de staging primeiro — funciona bem em algumas configurações, mas não em todas.
Personalizar a Saída de Produtos com woof_products_query
O hook de filtro woof_products_query (fonte: index.php) passa o array $query_args do shortcode [woof_products] antes de sua execução WP_Query. Use-o para adicionar consultas de meta personalizadas, excluir determinados produtos da saída ou ajustar a estrutura da consulta:
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;
});
Para manipulações em nível de taxonomia (alteração de operadores de relação entre taxonomias), use o hook relacionado woof_main_query_tax_relations.
Ativar o Cache de Objetos do WordPress para Dados do Filtro
O HUSKY oferece suporte ao hook woof_use_wp_cache para rotear seus dados internos através do cache de objetos do WordPress. Se você já usa um backend de cache de objetos persistente (Redis, Memcached), ativar este hook move os dados do filtro para fora do banco de dados e para um armazenamento rápido em memória:
add_filter('woof_use_wp_cache', function($is){
return true;
});
Importante: Este hook não tem efeito sem um plugin de cache de objetos persistente instalado. Não é um substituto para as configurações de cache integradas — ele as complementa quando seu ambiente de hospedagem suporta cache de objetos.
Combinar Configurações para Melhores Resultados
A linha de base recomendada para um grande catálogo (10.000+ produtos, muitos termos de taxonomia):
- Ativar Cache de recontagem dinâmica e Cache de termos em Avançado → Opções
- Ativar Modo Turbo e definir o limite de produtos para corresponder ao tamanho do seu catálogo
- Aplicar
woof_use_wp_cachese um cache de objetos persistente estiver disponível - Testar
woof_counter_methodno staging para ver se o modo de economia de memória funciona para sua configuração - Usar
woof_products_queryapenas quando precisar ajustar a consulta de saída do [woof_products]
Comece com as duas opções de cache integradas — elas não exigem alterações de código e proporcionam a melhoria mais perceptível por si só.