Обо мне Услуги Подробные кейсы Блог Инструменты Отзывы Партнёрам Контакты

Как мы ускорили старый сайт на OpenCart: мобильный LCP с 5,1 до 1,8 с

Скорость сайта на OpenCart: мобильный LCP 5,1 → 1,8 с, PageSpeed 73 → 98, компьютер 100

Старый сайт доставки еды на OpenCart, который создавался больше 8 лет назад. Мобильная версия была в «красной» зоне скорости Google. После двух этапов правок медиана LCP главной страницы упала с 5,1 до 1,8 с, балл PageSpeed вырос с 73 до 98. Дизайн, контент и админка остались прежними.

Содержание статьи
  1. Почему мобильная версия — это почти весь сайт
  2. Стартовая точка
  3. Что тормозило
  4. Что я сделал
  5. Как я работал, чтобы ничего не сломать
  6. Результаты
  7. Бонус: меню на iPhone открывалось со второго касания
  8. FAQ
Показатель (мобильный, медиана 10 замеров)ДоПосле
LCP главной5,1 с1,8 с
LCP категории «Пицца»3,0 с2,0 с
PageSpeed главной7398
PageSpeed категории «Пицца»8393
PageSpeed главной, компьютер—100

Почему мобильная версия — это почти весь сайт

По данным GA4, 88,6% активных пользователей (17 258 из 19 484) и 89,7% вовлечённых сеансов — с телефонов. На компьютеры приходится лишь 10,4% пользователей. Для доставки еды это логично: человек заказывает с дивана или по дороге домой.

GA4 — распределение пользователей по типу устройства
GA4 — распределение пользователей по типу устройства

Голодный человек с телефоном не будет ждать 5 секунд, пока появится меню. Он уйдёт к конкуренту. Плюс Google ранжирует с учётом Core Web Vitals — трёх показателей реального опыта пользователей Chrome:

  • LCP — как быстро появляется главный элемент страницы, норма до 2,5 с;
  • CLS — «прыгает» ли страница во время загрузки, норма до 0,1;
  • INP — как быстро сайт реагирует на действия, норма до 200 мс.

Цель: вывести мобильную версию в «зелёную» зону Core Web Vitals и ничего не сломать в заказах и аналитике.

Стартовая точка

На старте мобильная версия была в «красной» зоне: около 390 адресов в отчёте Core Web Vitals в Search Console. Десктоп — в «жёлтой».

Первый этап правок я сделал в рамках SEO-оптимизации сайта: размеры изображений, WebP, убранный лишний jQuery. Отчёт от 04.11.2026 показал:

УстройствоНеэффективныеНужно улучшитьЭффективные
Мобильный039028
ПК00418

Десктоп перешёл в «зелёную» зону, мобильный — из «красной» в «жёлтую». Остались две проблемы: CLS выше 0,1 и LCP выше 2,5 с.

Search Console — Core Web Vitals на 04.11.2026
Search Console — Core Web Vitals на 04.11.2026
Search Console — проблемы CLS и LCP на мобильных
Search Console — проблемы CLS и LCP на мобильных
SEO сайта доставки еды: разбор реального отчёта SEO · Доставка едыSEO сайта доставки еды: что я сделал и зачем — разбор реального отчётаСайт доставки пиццы на OpenCart: 15 категорий, 53 статьи, 29 страниц районов и сёл, Ahrefs 20 → 100, чистые карты сайта, микроразметка, CLS 0,383 → 0 и причина 6-секундного оформления заказа.30 окт 2026Читать

Реальные пользователи (CrUX)

Полевые данные Chrome — p75 реальных мобильных пользователей за 28 дней, снятые 07.11.2026 через PageSpeed Insights API. Этот период почти полностью приходится на время до правок.

Показатель (p75)Главная UAГлавная RU«Пицца» UAСайт в целом
Оценка Googleмедленномедленнобыстробыстро
LCP, с3,213,250,951,13
CLS0,390,390,010
INP, мс152161163154
FCP, с1,661,640,850,89
TTFB, с1,021,140,500,49

Самая слабая страница — главная. Интересный момент: в лабораторных замерах CLS главной — 0,022, а в реальных данных — 0,39. CrUX считает сдвиги за весь визит: прокрутку, попапы, догрузку блоков. Лабораторный тест видит только момент загрузки.

Что тормозило

Я разобрал мобильные отчёты PageSpeed Insights для главной и категории «Пицца». Картинки были лишь частью проблемы. Основное торможение давало то, что загружалось вместе со страницей и блокировало её показ.

ФакторОбъёмВлияние
Google Tag Manager + GA4350 КБ377 мс работы браузера при загрузке
Facebook Pixel225 КБ218 мс
Microsoft Clarity28 КБ75 мс
Старый jQuery 2.1.1 в шапке (дубль)87 КБ~0,9 с белого экрана
main.css в шапке232 КБ~0,45 с белого экрана
Фото блюд в JPG/PNG~1,1 МБ на категориютяжёлое главное фото экрана
Мобильные слайды 990×102458 КБ на слайдбольше, чем нужно для экрана ~720 px
Картинки без размеров—страница «прыгала» (CLS)

Ещё одна особенность: результаты PageSpeed сильно скачут от замера к замеру. LCP одной и той же страницы — от 1,5 до 11 с. Поэтому решения я принимал по медиане 10 замеров.

Что я сделал

Этап 1: стабильная вёрстка и лёгкие фото

  1. Размеры изображений. Карточкам блюд, превью статей, логотипу и иконкам добавил ширину и высоту. Браузер заранее резервирует место, и контент не сдвигается.
  2. Фото блюд в WebP. Сайт сам создаёт и отдаёт WebP-копии, оригиналы не менялись. Тест на 10 фото показал −73% веса, категория «Пицца» стала весить 537 КБ вместо 1 089 КБ. Старые браузеры по-прежнему получают JPG.
  3. Убрал дубль jQuery. Старая версия 2.1.1 в шапке только задерживала показ страницы. Единственный зависимый от неё скрипт — выбор бортика пиццы — перенёс на основную версию 3.3.1.

Этап 2: быстрый первый экран

  1. Встроенные стили первого экрана. ~49 КБ стилей, нужных для первого экрана, встроил прямо в страницу. Полный main.css (232 КБ) догружается после показа страницы.
  2. Приоритет первых фото. Первые 2 фото в каждой категории браузер загружает раньше остальных файлов. Главное фото экрана начинает грузиться на ~190 мс раньше.
  3. Лёгкие мобильные слайды. Обычные телефоны получают слайд 750 px — 38 КБ вместо 58 КБ. Очень чёткие экраны и планшеты, как и раньше, получают 990 px.
  4. Отложенный запуск Google Tag Manager. GTM теперь запускается после показа страницы или при первом действии человека: прокрутке, касании, клике. Событие gtm.js добавляется сразу, поэтому порядок событий в dataLayer такой же, как раньше, и ecommerce-события не теряются. Facebook Pixel уже стоял на триггере «Window Loaded», Clarity отключён.
GTM Preview после правок — теги GA4 и Facebook Pixel срабатывают
GTM Preview после правок — теги GA4 и Facebook Pixel срабатывают

Решение об отложенном GTM я принял сознательно: в статистику не попадают визиты короче ~1 секунды. Для аналитики и рекламы такие визиты ценности не имеют.

Как я работал, чтобы ничего не сломать

Сайт принимает заказы каждый день, поэтому ни одна правка не попадала к посетителям, пока не была проверена в тестовом режиме и замерена.

  1. Сначала диагностика. Перед изменениями — проверка, которая ничего не меняет на сайте: поддерживает ли сервер WebP, сколько весят файлы, как сделан слайдер.
  2. Каждое изменение с откатом. Каждую правку можно было сначала просмотреть, затем применить с резервной копией файлов и откатить одним кликом. Перед отправкой код проверялся на копии сайта.
  3. Тестовый режим. Новое поведение сначала работало только для страниц с отдельным тестовым параметром. Обычные посетители ничего не замечали.
  4. Проверка функций. Главная, категории, отзывы, корзина, RU-версия, выбор бортика и пересчёт цены, тестовый заказ, теги в предпросмотре GTM. Для встроенных стилей — автоматическое сравнение расположения элементов первого экрана с полным main.css и без него.
  5. Замеры по 10 тестов. Один замер PageSpeed ничего не доказывает. Я сделал инструмент, который запускает PageSpeed Insights API с сервера. Каждый вариант — 10 мобильных замеров без кеша PageSpeed, затем медиана.
  6. Запуск для всех. Только после этого правка включалась для всех посетителей, и я перепроверял всё повторно.

Результаты

После этапа 2 мобильный LCP обеих ключевых страниц опустился ниже границы 2,5 с: главная — с 5,1 до 1,8 с, категория «Пицца» — с 3,0 до 2,0 с.

Мобильный LCP до и после этапа 2, медиана 10 замеров
Мобильный LCP до и после этапа 2, медиана 10 замеров
Показатель (мобильный, медиана 10 замеров)Главная, доГлавная, после«Пицца», до«Пицца», после
Балл PageSpeed73988393
TBT, мс255136381264
Speed Index, с2,11,52,01,8
FCP, с0,930,930,940,94
CLS0,0220,0220,0120,024

«До» здесь — состояние после этапа 1, «после» — после этапа 2.

Контрольный замер главной в PageSpeed Insights после запуска для всех: мобильный — 98 баллов (LCP 1,7 с, TBT 140 мс, CLS 0,022), компьютер — 100 баллов (LCP 0,3 с).

PageSpeed Insights, мобильный — 98
PageSpeed Insights, мобильный — 98
PageSpeed Insights, компьютер — 100
PageSpeed Insights, компьютер — 100

Повторный замер реальных данных Google запланирован на 20-е числа ноября, когда в 28-дневном окне будет преобладать новая версия сайта, и на начало декабря, когда окно полностью перейдёт на неё. Тогда дополню кейс.

Ключевая мысль: скорость старого сайта редко упирается только в картинки. Наибольший выигрыш здесь дали отложенные сторонние скрипты и стили первого экрана, встроенные в страницу.

Бонус: меню на iPhone открывалось со второго касания

В мобильном меню на iPhone категорию приходилось нажимать дважды. Первое касание по «Пицца» или «Суши» ничего не делало, переход срабатывал только со второго. На компьютере и в эмуляции телефона баг не воспроизводился.

Диагностика на реальном телефоне. Я добавил на сайт скрытую панель, которая включалась только по отдельному параметру, записывала все события касания и сохраняла их между страницами. Один скриншот с iPhone показал причину.

Причина. Если палец попадал на SVG-иконку категории, Safari отправлял touchend и mouseover, но не click. Это известная особенность iOS с SVG внутри ссылок. К тому же старый код раскрывал десктопное меню при «наведении» даже на телефонах.

Исправление. Одно CSS-правило: SVG-иконки в ссылках не перехватывают касание (pointer-events: none), и касание попадает на саму ссылку. Раскрытие меню при наведении теперь работает только на компьютерах с мышкой.

Результат. На iPhone с iOS 18.7 категории открываются с первого касания — и по тексту, и по иконке.

Баги телефонов ищут на телефонах: в эмуляции этой проблемы просто не было видно.

CRO для Google Ads: не реклама сливает бюджет. Его сливает ваш сайт Google Ads · МаркетингCRO для Google Ads: не реклама сливает бюджет. Его сливает ваш сайтРеклама приводит на страницу, а продаёт сайт. Два разбора: лендинг и карточка товара. Что мешает конверсии и как удешевить заявки без смены рекламы.6 окт 2026Читать
Сайт медленный на телефонах, а реклама не окупается? Напишите, разберу скорость и техническое состояние

FAQ по теме

Частые вопросы

Можно ли ускорить старый сайт на OpenCart без редизайна?
Да. Большую часть торможения дают сторонние скрипты, стили, которые блокируют показ страницы, и тяжёлые изображения. Это исправляется техническими правками без изменения дизайна, контента и админки.
Не сломает ли отложенный Google Tag Manager аналитику?
Если сохранить порядок событий в dataLayer, ecommerce-события и конверсии работают как раньше. Теряются только визиты короче секунды, которые для аналитики и рекламы ценности не имеют.
Почему PageSpeed каждый раз показывает разный результат?
Это лабораторный тест одной загрузки, и он зависит от сети и нагрузки. LCP одной и той же страницы может колебаться в разы, поэтому решения стоит принимать по медиане нескольких замеров.
Чем реальные данные CrUX отличаются от PageSpeed?
CrUX — это данные реальных пользователей Chrome за 28 дней, и именно их Google использует в Core Web Vitals. Они учитывают весь визит, поэтому, например, CLS в реальных данных бывает выше, чем в лабораторном тесте.
Сколько ждать, пока Search Console увидит улучшения?
Реальные данные обновляются скользящим окном 28 дней. Первые изменения видны через 2–3 недели, полностью новая версия сайта попадает в данные примерно через месяц после правок.



Заявка

Обсудим
ваш проект

Оставьте заявку — разберёмся с ситуацией, обсудим цели и подберём оптимальное решение под ваш бизнес и бюджет.

🏆
Как Google Partner, я могу помочь получить рекламный бонус от Google до 55 000 грн на первые кампании.
❌ Не работаю с: гемблинг · беттинг · алкоголь · табак · крипта · серые ниши · МФО/PDL
Или напишите напрямую:
▸ new_project.init()
Обсудить проект