Як прискорити фільтрацію товарів WooCommerce у великих каталогах за допомогою HUSKY
Коли магазин WooCommerce виростає за межі кількох тисяч товарів, фільтр продуктів може стати вузьким місцем. Кожен термін таксономії потребує запиту на підрахунок, кожен атрибут додає об’єднання, а динамічний перерахунок збільшує роботу бази даних. HUSKY (раніше WOOF) містить кілька вбудованих механізмів кешування та гаків, розроблених спеціально для великих каталогів.
Увімкнути динамічний перерахунок кешу
вHUSKY → Advanced → Optionsви знайдете налаштуванняКешувати номер динамічного перерахунку для кожного елемента у фільтрі. Якщо ввімкнено, HUSKY зберігає результати повторного підрахунку для кожного терміну в таблиці параметрів WordPress або як перехідний процес, тому наступні завантаження сторінки повністю пропускають запити підрахунку. Це єдиний найефективніший перемикач для магазинів, які використовують Dynamic Recount із багатьма таксономічними термінами.
Кеш очищається за розкладом, а не за змінами продукту. Інтервал встановлюється опцією автоматичного очищення поруч із налаштуванням кешу (термін дії за умовчанням становить один тиждень). Після додавання або імпортування партії продуктів ви можете очистити її вручну за допомогоюочистити кешкнопку в адміністративній панелі.
Увімкнути терміни кешу
Поруч із кеш-пам’яттю перерахунку єТерміни кешуналаштування. Якщо форма фільтра містить велику кількість термінів (сотні категорій продуктів, атрибутів або тегів), цей параметр кешує відтворений список термінів, тому HTML не потрібно перебудовувати під час кожного завантаження сторінки.
Він працює так само, як кеш повторного підрахунку: очищається за розкладом, має власний інтервал автоматичного очищення таочистити кеш термінівкнопка в адмінці. Для магазинів із глибоко вкладеними деревами категорій або багатьма значеннями атрибутів увімкнення обох кешів разом значно зменшує навантаження на базу даних для кожного запиту.
Використовуйте Turbo Mode для попередньо згенерованих даних продукту
Turbo Modeце найпотужніша оптимізація, яку HUSKY пропонує для великих каталогів. Якщо ввімкнено, він попередньо створює файл даних JSON із параметрами продукту. Замість того щоб будувати та виконувати комплексWP_Query + tax_query + meta_queryна кожен запит фільтра плагін зчитує попередньо обчислені дані — у великих каталогах різниця в часі відповіді є значною.
Turbo Mode налаштовано підHUSKY → Розширення → Turbo Mode. Відновлення файлу можна запланувати через WordPress cron або, для надійності, через реальний сервер crontab (див. FAQ про налаштування Turbo Mode cron).
Відрегулюйте обмеження продукту Turbo Mode
За замовчуванням Turbo Mode обробляє до15 000 товарівпід час створення кешу. У магазинах з більшою кількістю товарів генерація припиняється до того, як усі продукти будуть проіндексовані. Використовуйтеwoof_turbo_mode_products_limitгачок для підвищення цієї межі:
add_filter('woof_turbo_mode_products_limit', function($limit) {
// Increase limit for catalogs larger than 15,000 products
return 50000;
});
Гачок розташований вext/turbo_mode/index.php. Встановіть достатньо високе значення, щоб охопити весь каталог, але пам’ятайте про час виконання PHP і обмеження пам’яті під час створення файлу.
Оптимізуйте метод лічильника для великих сайтів
Динамічна система перерахунку використовує aWP_Queryна базі лічильника, який може споживати значну кількість пам’яті в магазинах з багатьма продуктами. Thewoof_counter_methodгачок (джерело:classes/counter.php) дозволяє переключитися на легший метод підрахунку, який встановлюєnopaging=falseіposts_per_page=1, reducing per-query memory:
add_filter('woof_counter_method', function($saving_memory) {
// Enable memory-saving counter mode
return true;
});
Спершу перевірте це на своєму проміжному сайті — це добре працює на деяких конфігураціях, але не на всіх.
Налаштуйте вихід продуктів за допомогою woof_products_query
Thewoof_products_queryгачок фільтра (джерело:index.php) проходить$query_argsмасив[woof_products]короткий код перед йогоWP_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;
});
Для маніпуляцій на рівні таксономії (зміна операторів зв’язку між таксономіями) використовуйте пов’язаніwoof_main_query_tax_relationsгачок.
Увімкнути кеш об’єктів WordPress для даних фільтра
HUSKY підтримуєwoof_use_wp_cacheгачок для маршрутизації внутрішніх даних через кеш об’єкта WordPress. Якщо ви вже використовуєте бекенд постійного кешу об’єктів (Redis, Memcached), увімкнення цього хука переміщує дані фільтра з бази даних у швидке сховище в пам’яті:
add_filter('woof_use_wp_cache', function($is){
return true;
});
Важливо:Цей хук не має ефекту, якщо не встановлено плагін постійного кешування об’єктів. Це не заміна вбудованих налаштувань кешу — воно доповнює їх, якщо ваше середовище хостингу підтримує кешування об’єктів.
Комбінуйте налаштування для найкращих результатів
Рекомендована базова лінія для великого каталогу (понад 10 000 продуктів, багато таксономічних термінів):
- УвімкнутиКешувати динамічний перерахунокіТерміни кешуу Advanced → Options
- УвімкнутиTurbo Modeі встановіть ліміт продуктів відповідно до розміру вашого каталогу
- Застосувати
woof_use_wp_cacheякщо доступний постійний кеш об’єктів - Тест
woof_counter_methodпід час підготовки, щоб перевірити, чи працює режим збереження пам’яті для ваших налаштувань - використання
woof_products_queryлише тоді, коли вам потрібно налаштувати вихідний запит [woof_products].
Почніть із двох вбудованих перемикачів кешу — вони не потребують змін у коді й забезпечують найбільш помітне покращення самі по собі.