Ми використовуємо cookie-файли, щоб покращити ваш досвід, аналізувати трафік сайту та персоналізувати вміст. Ви можете прийняти всі cookie або обрати, які категорії дозволити. Дізнатися більше
Оптимізація INP для сторінок деталей продуктів (PDP) у 2026 році | Ordiko
Посібник
Оптимізація INP для сторінок деталей продуктів (PDP) у 2026 році
Сфокусований посібник з виправлення Interaction to Next Paint (INP) на електронних комерційних PDP у 2026 році, що охоплює обмін варіантами, галерею, додавання до кошика та шаблони React Server Components, які постійно знижують INP до 200мс.
PT1H30M
TL;DR. INP на PDP виправлено шляхом зменшення обсягу JavaScript та оптимістичних взаємодій. Використовуйте React Server Components для статичних частин. Використовуйте useOptimistic для зміни варіантів та додавання в кошик. Використовуйте startTransition для не термінових оновлень. Затримуйте пошук за допомогою AbortController. Витягуйте regex і уникайте spread у обробниках подій. Ціль: < 200ms p75, досяжно < 100ms.
Що вимірює INP
Interaction to Next Paint (INP) вимірює найдовший час взаємодії до малювання на сторінці під час візиту користувача. "Взаємодія" — це клік, торкання або натискання клавіші, яке викликає JavaScript.
INP розраховується як найгірший випадок (виключаючи рідкісні винятки), а не середнє значення. Один повільний клік фільтра може зіпсувати ваш INP, навіть якщо 99 інших взаємодій були швидкими.
Значення INP
Висновок
≤ 200ms
Добре
200ms – 500ms
Потрібно покращити
> 500ms
Погано
Крок 1: Профілюйте, не гадайте
Поширені запитання
Чому INP набагато складніше, ніж LCP?
LCP в основному є проблемою CDN та оптимізації зображень з добре зрозумілими виправленнями. INP - це час виконання JavaScript під час взаємодії користувача; кожен клік може мати різне вузьке місце. Виправлення INP вимагає дисципліни на рівні компонентів для кожного інтерактивного елемента на сторінці.
Чи виправляє React Server Components INP автоматично?
В основному так. RSC зменшує обсяг JS, що відправляється в браузер, що зменшує роботу основного потоку, що покращує INP. Але інтерактивні частини сторінки все ще потребують клієнтського JS — лише RSC не виправить погано написаний клієнтський компонент, який створює regex в onClick.
Який найбільший вбивця INP на PDP?
Важке рендеринг на стороні клієнта віджетів рекомендацій ('Часто купують разом', 'Вам також може сподобатися'), які відправляють 50–200КБ JS і агресивно гідратуються при першій взаємодії. Перемістіть їх до серверних компонентів або завантажуйте їх за допомогою IntersectionObserver.
Наскільки швидко може працювати добре оптимізований PDP на INP?
У реальному світі p75 INP нижче 100мс є досяжним. PDP Ordiko за замовчуванням мають 80–160мс p75 INP без ручної оптимізації. Користувацькі теми, які слідують шаблонам у цьому посібнику, можуть стабільно отримувати менше 100мс.
Схоже для читання
Використовуйте вкладку Performance у Chrome DevTools, щоб записати сесію взаємодії PDP. Шукайте:
Довгі завдання (жовті смуги > 50ms) під час взаємодій.
Примусові переробки (пурпурні смуги).
Важке attribution для записів INP.
Або використовуйте API Long Animation Frames (LoAF) у вашому RUM:
const observer = new PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
if (entry.duration > 200) {
console.log('Довга рамка:', entry);
}
}
});
observer.observe({ type: 'long-animation-frame', buffered: true });
Крок 2: Відкладіть некритичний JS
Найбільші виграші INP на більшості PDP приходять від видалення або відкладання скриптів, які не потрібно завантажувати терміново:
Тільки AddToCartButton і VariantSelector є компонентами клієнта. Все інше залишається на сервері. Розмір пакету зменшується на 60–80% у порівнянні з повністю клієнтським PDP.
function handleClick(text) {
if (/[<>]/.test(text)) { ... } // regex створюється при кожному кліку
setItems(prev => [...prev, ...newItems]); // spread у акумуляторі
}
Добре:
const TAG_REGEX = /[<>]/; // витягнуто в область модуля
function handleClick(text) {
if (TAG_REGEX.test(text)) { ... }
setItems(prev => prev.concat(newItems));
}
Крок 8: Ліниве завантаження нижче згину
Рекомендації, відгуки, пов'язані продукти: розмістіть їх нижче згину та ліниво завантажуйте за допомогою dynamic + ssr: false для чисто клієнтських віджетів або завантажуйте при перетині:
Для секцій, що рендеряться на сервері, оберніть у <Suspense> з увімкненим PPR, щоб вони транслювалися після статичної оболонки.
Вимірювання успіху
Після впровадження виправлень покращення INP відображаються в:
Chrome DevTools під Performance → Web Vitals overlay (синтетичний, миттєвий).
Вашому власному RUM з бібліотекою web-vitals (реальний користувач, майже в реальному часі).
Search Console → Core Web Vitals (реальний користувач, p75 за 28 днів, затримка 2–4 тижні).
Типовий PDP, який починав з 350ms p75 INP і слідує цьому посібнику, досягає 80–120ms p75 INP протягом 2–4 тижнів після впровадження.
Як Ordiko за замовчуванням постачає PDP з хорошим INP
Статичні частини PDP є RSC (без клієнтського JS).
Вибір варіанту використовує useOptimistic + Серверні дії.
Галерея використовує startTransition + попереднє завантаження зображень при наведенні.
Пошук затримується на 200ms за допомогою AbortController.
Кошик відображає останню відому кількість оптимістично.
Значення p75 INP за замовчуванням: 80–160ms.
FAQ
Чому INP набагато складніший за LCP? LCP в основному є проблемою CDN та оптимізації зображень з добре зрозумілими виправленнями. INP — це час виконання JavaScript під час взаємодії користувача; кожен клік може мати різне вузьке місце. Виправлення INP вимагає дисципліни на рівні компонентів для кожного інтерактивного елемента на сторінці.
Чи автоматично виправляє INP React Server Components? В основному так. RSC зменшує обсяг JS, що постачається в браузер, що зменшує роботу основного потоку, що покращує INP. Але інтерактивні частини сторінки все ще потребують клієнтського JS — RSC сам по собі не виправить погано написаний клієнтський компонент, який створює regex у onClick.
Який найбільший вбивця INP на PDP? Важке рендеринг на стороні клієнта віджетів рекомендацій ('Часто купують разом', 'Вам також може сподобатися'), які постачають 50–200KB JS і агресивно гідратуються при першій взаємодії. Перемістіть їх на серверні компоненти або ліниво завантажуйте за допомогою IntersectionObserver.
Наскільки швидким може бути добре оптимізований PDP за INP? Справжній p75 INP нижче 100ms досяжний. PDP Ordiko за замовчуванням має 80–160ms p75 INP без ручної оптимізації. Користувацькі теми, які слідують шаблонам у цьому посібнику, можуть стабільно досягати значень нижче 100ms.