Рейтинг: 60
Верифицирован через Сбер ID
Всего отзывов: 0
  • Работ в портфолио: 6
  • Типовых услуг: 5
  • Работ на продажу: 0
  • Возраст: 35 лет
  • Стаж работы: 11 лет
  • Зарегистрирован: 23.02.2026
  • Образование: Cпециалитет
  • Юридический статус:Самозанятый
  • Стоимость услуг (руб): 3 500 за час 249 998 за месяц
Был на сайте:

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

Описание

Ускорить интернет-магазин сантехники на 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-тюнинг.

Презентация проекта

V1_reqest.png
devtols.png
V3_before_after.png

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

0