Про мене Послуги Детальні кейси Блог Інструменти Відгуки Партнерам Контакти

Як ми збільшили швидкість старого сайту на 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: не реклама зливає бюджет. Його зливає ваш сайтЧому реклама не витягне кривий сайт: два реальні CRO-розбори (лендинг медичного сенсора і картка товару) та чекліст першого екрана.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()
Обговорити проєкт