DEV Community

Глеб Лужбин S-WEBS
Глеб Лужбин S-WEBS

Posted on • Originally published at s-webs24.ru

Ускорение интернет-магазина на 1С-Битрикс с 7 до 2 секунд: SQL, кеширование, WebP

Интернет-магазин федерального дистрибьютора IT-оборудования тормозил. Страницы каталога и карточки товаров открывались по 7–15 секунд. Показатель отказов вырос до 62%, а позиции в поиске поползли вниз. За 3 рабочих дня мы разобрали проблему и получили LCP 2 секунды, не меняя сервер.

С чего начали: диагностика, а не кеширование

Первым делом мы не полезли в настройки кеша. Мы проанализировали серверные логи, выделили пиковые нагрузки и нашли три корневые причины:

  1. Медленные SQL-запросы. Фильтрация каталога из 250+ позиций порождала тяжёлые запросы к таблицам b_iblock_element и b_iblock_section. В 80% случаев проблема именно в базе данных, а не в слабом сервере.

  2. Нет кеширования на уровне веб-сервера. Nginx честно гонял каждый запрос через PHP, хотя 90% страниц каталога не менялись часами.

  3. Изображения без сжатия. Размер страницы каталога — 4,2 МБ. Без WebP, без lazy loading, без минификации.

Оптимизация базы данных

Проанализировали медленные запросы через EXPLAIN, добавили недостающие индексы в таблицы каталога. Настроили параметры MySQL: увеличили innodb_buffer_pool_size, для MySQL 5.7 добавили query_cache_size. Почистили таблицы истории и archived-логи.

Результат: время выполнения поисковых запросов сократилось в 4 раза.

Кеширование на двух уровнях

На уровне приложения включили автокеширование компонентов каталога и меню в Битрикс. Страницы перестали пересчитываться при каждом обращении.

На уровне nginx настроили fastcgi_cache для динамических страниц. Повторные запросы отдаются из кеша веб-сервера без обращения к PHP.

Сжатие и минификация фронтенда

  • Конвертировали изображения в WebP с fallback-механизмом
  • Добавили lazy loading для картинок каталога
  • Включили gzip для CSS, JS и HTML
  • Объединили и минифицировали CSS/JS — количество HTTP-запросов сократили на 40%

Результаты: метрики до и после

Метрика До После
LCP 7–15 с 2 с
TTFB 2,5 с 300 мс
Размер страницы каталога 4,2 МБ 1,1 МБ
HTTP-запросов 120+ 72
Отказы 62% 38%
Позиции в поиске падение рост на 15–20

5 ошибок, которые убивают скорость

  1. Композитный кеш без исключений. На проектах с корзиной и личным кабинетом показывает устаревшие данные.
  2. Игнорирование базы данных. Менять хостинг до анализа SQL-запросов — деньги на ветер.
  3. Сжатие без WebP. WebP даёт экономию 25–35% по сравнению с JPEG при том же качестве.
  4. Нет мониторинга. Через месяц после оптимизации сайт снова «тяжелеет», а вы об этом не знаете.
  5. Кеширование без автосброса. После обновления каталога посетители видят старую версию.

Вывод

Интернет-магазин с большим каталогом и высокой нагрузкой можно ускорить в 3–7 раз без замены сервера. Последовательная диагностика и комплексный подход — база данных, кеширование, работа с контентом — дают измеримый результат за несколько дней.

Читать полностью на S-WEBS24

Top comments (0)