Дмитрий Ильин arcaneflow Сбер ID
Рейтинг
73
№ 43 223 в каталоге
Отзывы
0
Профессионализм
-/10
Коммуникация
- /10
Город
Нижний Новгород
Опыт работы
11 лет
На сайте с
2026 года
Юридический статус
Самозанятый

Оптимизация интернет-магазина на CS-Cart: страница каталога грузилась 16 секунд, стала 1 секунда

Используемые навыки CS-Cart MySQL Nginx PHP Оптимизация скорости страницы

Описание

Ускорить интернет-магазин сантехники на CS-Cart с каталогом ~58 000 товаров перед запуском рекламы. Страницы категорий открывались 5–16 секунд, главная — 2.7 секунды, поиск — 9–11 секунд. Владелец считал, что упирается в слабый сервер, и думал про апгрейд тарифа.

Решение

Я начал не с покупки ресурсов, а с диагностики. На сервере хватало мощности (8 ядер, ~11 ГиБ RAM) — значит, дело не в железе, а в том, что каждый запрос делал лишнюю работу.

Корневой причиной оказался один флаг. В базе был включён режим разработки Smarty (compile_check), оставшийся с чьей-то отладки шаблонов. В ядре CS-Cart он отключает весь блочный кеш — каждая страница пересобиралась с нуля, с десятками тяжёлых SQL-запросов вместо одного. Один UPDATE в базе стал главным фиксом.

Дальше — шесть изменений первой фазы: включение блочного кеша, перенос индексов MyISAM в RAM (key_buffer_size 16M→512M), новые индексы на таблице товаров, блокировка ботов на уровне nginx и скрипт прогрева кеша по витринам.

Отдельно разобрал плавающие тормоза «то быстро, то медленно». Причиной были боты (SemrushBot, ClaudeBot, скрейперы): они грели холодные страницы и упирались в table-lock MyISAM — тёплые категории у живых людей ждали очереди. После блокировки паразитов (поисковые системы оставил) тормоза ушли.

Сознательно отклонил APCu как backend кеша: под Apache mpm_itk каждый запрос — отдельный процесс, память APCu не разделяется между запросами, замер показал file=940ms против apcu=1360ms. Выбрал по числам, а не по моде.

Результат

TTFB на прогретом кеше: главная 2709→819 ms, категории 5–16s→~1s, карточка товара 2018→819 ms, корзина 1374→789 ms. Сервер держит ~100–150 одновременных пользователей / ~15–20k визитов в день — запас под старт рекламы. Без апгрейда тарифа и без переписывания кода.

Честно про ограничения: поиск остаётся ~3.6–4.9s (упирается в движок, нужен FULLTEXT или Searchanise), холодный кеш 3–5s и table-lock MyISAM лечатся миграцией на InnoDB — это дорожная карта под рост трафика, а не latency-тюнинг.

Оценили проект:

Другие проекты

Все проекты →
Искусственный интеллект AI-система матчинга резюме и вакансий под ключ: парсинг любых форматов из Telegram + векторный поиск
AI-система матчинга резюме и вакансий под ключ: парсинг любых форматов из Telegram + векторный поиск
66
Искусственный интеллект Персональный AI-агент на своём VPS под ключ: мультиагентная система в Telegram, свои данные и интеграции без SaaS-подписки
Персональный AI-агент на своём VPS под ключ: мультиагентная система в Telegram, свои данные и интеграции без SaaS-подписки
28
Веб-разработка и IT Подготовка интернет-магазина на CS-Cart к запуску: эквайринг Альфа-Банка, обновление цен, региональные витрины
Подготовка интернет-магазина на CS-Cart к запуску: эквайринг Альфа-Банка, обновление цен, региональные витрины
74
Веб-разработка и IT Импорт каталога 58 000 товаров в CS-Cart из CSV: характеристики, фильтры, фото — скриптом
Импорт каталога 58 000 товаров в CS-Cart из CSV: характеристики, фильтры, фото — скриптом
40