HUSKY - Product Filter for WooCommerce

Як прискорити фільтрацію товарів WooCommerce у великих каталогах за допомогою HUSKY

Як прискорити фільтрацію товарів 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].

Почніть із двох вбудованих перемикачів кешу — вони не потребують змін у коді й забезпечують найбільш помітне покращення самі по собі.