OpenCart может работать быстро, но после установки десятка модулей и роста каталога начинает терять секунды. Особенно заметно на мобильном и в фильтрах.
Разбираем 12 точек роста и порядок действий, который не требует переписывать магазин с нуля.
Почему OpenCart тормозит
Платформа сама по себе не является медленной. Проблемы появляются из-за модулей, шаблонов и запросов, которые выполняются на каждом хите.
- Тяжёлые модули на всех страницах.
- Запросы без индексов.
- Большие изображения.
- Лишние скрипты.
- Кэш отключён.
- Старая версия PHP.
- Синхронные интеграции.
Начните с замеров
Пока нет цифр до изменений, улучшение невозможно доказать. Замерьте каталог, карточку, поиск и checkout.
- Lighthouse.
- WebPageTest.
- Логи медленных запросов.
- Метрики сервера.
- Реальные данные Метрики.
- Мобильная сеть.
Кэш и Twig
OpenCart поддерживает кэш, но он должен быть настроен по типам страниц и корректно сбрасываться при изменении данных.
- Кэш каталога.
- Кэш карточки.
- Кэш меню.
- Сброс при изменении.
- Проверка после релиза.
- Без кэша корзины.
Запросы и индексы
Список товаров с фильтрами может делать десятки запросов. Индексы и оптимизация выборок дают больше, чем апгрейд сервера.
- Индексы по полям.
- Выборка только нужных колонок.
- Без N+1.
- Ограничение выборок.
- Кэш справочников.
- Профайлер.
Изображения
Изображения — частая причина медленного каталога. Особенно если модуль генерирует десятки размеров на лету.
- WebP или AVIF.
- Правильные размеры.
- Ленивая загрузка.
- CDN.
- Кэш миниатюр.
- Без огромных оригиналов.
Модули и сторонние скрипты
Каждый модуль может подключать скрипты и делать запросы. Проверьте, что действительно используется.
- Аудит модулей.
- Отключение лишних.
- Проверка обновлений.
- Локальные библиотеки.
- Отложенная загрузка.
- Контроль размера страницы.
Шаблоны
Шаблон может дублировать запросы и подключать тяжёлые слайдеры. Проверьте его отдельно.
- Лишние блоки.
- Повторные запросы.
- Большие циклы.
- Слайдеры.
- Шрифты.
- Иконки.
Сервер и PHP
Старая версия PHP и недостаток памяти замедляют любую оптимизацию. Проверьте окружение.
- PHP 8.x.
- OPcache.
- PHP-FPM.
- Память.
- Диск.
- Логи.
База данных
Рост каталога увеличивает нагрузку на базу. Медленные запросы нужно найти и исправить.
- Медленные запросы.
- Индексы.
- Дубли.
- Большие JOIN.
- Кэш выборок.
- Регулярная оптимизация.
CDN
Статика не должна ехать с основного сервера, особенно если аудитория распределена.
- Изображения.
- CSS и JS.
- HTTP/2.
- Сжатие.
- Cache-Control.
- Ближайшая точка.
Каталог и фильтры
Фильтры — самая тяжёлая часть каталога. Их нужно проверять на реальном объёме товаров.
- Индексы.
- Кэш.
- Ограничение параметров.
- Поисковый движок.
- Пагинация.
- Мониторинг.
Интеграции
Обмен с 1С и складом не должен блокировать витрину. Вынесите его в очередь.
- Очереди.
- Таймауты.
- Повторные попытки.
- Логи.
- Мониторинг.
- Изоляция.
Что не помогает
Иногда ускорение сводится к покупке сервера или установке ещё одного модуля. Это не устраняет причину.
- Только апгрейд сервера.
- Отключение кэша.
- Сжатие вручную.
- Новый модуль.
- Переписывание без замеров.
- Игнорирование мобильных.
План работ
Начните с кэша и изображений, затем запросы и инфраструктура. Каждый шаг проверяйте замерами.
Зафиксировать baseline.
Настроить по страницам.
Сжать и перевести.
Убрать лишние.
Обновить PHP и БД.
Сравнить результат.
Чек-лист
Итог
Ускорение OpenCart — это последовательность небольших улучшений. Начните с замеров и кэша, затем переходите к запросам и серверу.
Что смотреть в каталоге
Каталог — самая тяжёлая часть магазина. Здесь важно проверить не только скорость сервера, но и количество запросов на список товаров.
- Количество запросов.
- Индексы.
- Кэш фильтров.
- Изображения.
- Пагинация.
- Сортировка.
- Поиск.
Кэш по страницам
Разные страницы требуют разных правил кэширования. Корзина и кабинет не должны попадать в общий кэш.
- Каталог.
- Карточка.
- Статические страницы.
- Корзина.
- Кабинет.
- Поиск.
- Сброс.
Профилирование запросов
Профайлер показывает, какие запросы занимают время. Без него оптимизация превращается в угадывание.
- Время запроса.
- Количество.
- Дубли.
- Тяжёлые выборки.
- Индексы.
- Внешние вызовы.
Шаблоны и модули
Модуль может быть полезным, но подключать скрипты на всех страницах. Проверьте, где он реально нужен.
- Список модулей.
- Где подключаются.
- Размер скриптов.
- Обновления.
- Конфликты.
- Отключение.
Нагрузка и распродажи
В пик нагрузка растёт в разы. Если сайт едва держит обычный трафик, распродажу он не переживёт.
- Кэш.
- Очереди.
- Ограничение поиска.
- Статическая страница.
- Мониторинг.
- План отката.
Мониторинг
Скорость деградирует после обновлений и роста каталога. Нужны постоянные замеры.
- Lighthouse.
- Реальные метрики.
- Медленные запросы.
- Ошибки.
- Нагрузка.
- Алерты.
Когда нужен рефакторинг
Если точечные правки не помогают, стоит обсудить более глубокие изменения.
- Каждая доработка ломает кэш.
- Модули дублируют логику.
- Интеграции на костылях.
- Каталог не масштабируется.
- Обновления опасны.
План на 30 дней
Начните с замеров и кэша, затем изображения и запросы. Не пытайтесь сделать всё сразу.
Замеры и кэш.
Изображения и модули.
Запросы и индексы.
Проверка и мониторинг.
Кэш изображений
OpenCart часто генерирует миниатюры на лету. Это удобно, но при большом каталоге создаёт нагрузку.
- Предгенерация.
- Кэш размеров.
- WebP.
- CDN.
- Ленивая загрузка.
- Очистка старых.
Поиск и фильтры
Поиск и фильтры — самые дорогие сценарии. Их нужно проверять отдельно от каталога.
- Индексы.
- Кэш.
- Ограничение параметров.
- Поисковый движок.
- Логи.
- Мониторинг.
Мобильная скорость
На мобильном все проблемы заметнее. Проверяйте на реальном телефоне и медленной сети.
- Изображения.
- Скрипты.
- Шрифты.
- Кнопки.
- Checkout.
- Кэш.
Что делать после ускорения
Закрепите результат процессом: проверки перед релизом, бюджет производительности и мониторинг.
- Baseline.
- Релизный чек-лист.
- Бюджет страницы.
- Мониторинг.
- Ответственный.
- Аудит.
Типичные ошибки
Ускорение часто ломают спешные изменения без замеров.
- Нет baseline.
- Отключили кэш.
- Поставили модуль.
- Не проверили мобильный.
- Не сравнили результат.
- Забыли про checkout.
Как выбрать подрядчика по ускорению
Смотрите на опыт с OpenCart и на умение работать с замерами. Подрядчик должен показать план и критерии результата, а не просто обещать «сделать быстро».
- Опыт OpenCart.
- Замеры до/после.
- Работа с кэшем.
- Оптимизация запросов.
- Понятная смета.
- Поддержка.
Бюджет и сроки
Бюджет зависит от состояния проекта и причин торможения. Начните с диагностики, чтобы не платить за лишние работы. Хороший подрядчик сначала показывает замеры и узкие места, а потом предлагает работы. Иначе можно потратить бюджет на сервер, который не был проблемой. Сначала измерения, потом работы.
- Диагностика.
- Кэш.
- Изображения.
- Запросы.
- Сервер.
- Мониторинг.
Замерим страницы, найдём узкие места и составим план без переписывания.
Заказать аудит →