Про швидкість магазину зазвичай говорять з боку покупця. Але є інший бік, який щодня коштує грошей: коли менеджер чекає хвилину, щоб відкрити список товарів.
Чому адмінка гальмує інакше, ніж вітрина
Вітрину рятує кеш: сторінка збирається один раз і віддається всім. В адмінці так не вийде — кожен запит унікальний, а дані мають бути свіжими. Тому тут не працює жодне з рішень, які допомагають вітрині, і потрібні інші: індекси, переписані запити, правильні ліміти.
Типові симптоми й причини
Список товарів відкривається десятки секунд
Запит списку зазвичай рахує загальну кількість позицій по всьому каталогу з урахуванням фільтрів. Без потрібних індексів на десятках тисяч товарів це стає найповільнішою операцією в системі.
Пошук по замовленнях підвішує весь сайт
Пошук за полями, у яких немає індексу, змушує базу перебирати всю таблицю. Поки він виконується, інші запити стоять у черзі — і вітрина теж починає гальмувати.
Товар із багатьма опціями не зберігається
Форма товару передає сотні полів. Коли їх кількість перевищує ліміт сервера на число вхідних змінних, частина просто відкидається — товар зберігається, але без опцій. Помилки при цьому немає, і причину шукають довго.
Імпорт прайсу кладе сервер
Обробка великого файлу за один прохід упирається в ліміти пам'яті й часу. Правильно — обробляти частинами зі збереженням прогресу.
Що дає найбільший ефект
- Індекси під конкретні запити ваших списків і фільтрів — не «стандартний набір», а те, що реально виконується.
- Переписані найважчі вибірки.
- Коректні ліміти сервера на кількість вхідних полів і час виконання.
- Ревізія модулів: типова знахідка — розширення, яке робить окремий запит до бази на кожен рядок списку.
Коли впирається не в код
Якщо база й запити вже впорядковані, а адмінка все одно повільна — питання переходить у площину сервера: обсяг пам'яті під базу, швидкість диска. Це вже оптимізація продуктивності сервера, і про порядок діагностики є окремий матеріал.
Практична робота саме над адмінкою — послуга оптимізації адмінки для великого каталогу. Якщо гальмує й вітрина, у парі йде оптимізація швидкодії магазину, а для бази — налаштування MariaDB.