Пошук уроків, статей та іншого контенту
Проведете аудит продуктивності сторінки в Lighthouse і правильно інтерпретуватимете його результати.
Lighthouse — це інструмент у Chrome DevTools для автоматизованої перевірки вебсторінок. Він аналізує сторінку та формує звіт за кількома категоріями:
Performance — швидкість завантаження та реагування сторінки;
Accessibility — доступність для користувачів із різними потребами;
Best Practices — типові рекомендації щодо якості вебсторінки;
SEO — базові технічні умови для пошукової оптимізації.
У цьому уроці зосередимося на категорії Performance.
Lighthouse не просто повідомляє, що сторінка «повільна». Він показує:
числову оцінку;
метрики, на яких ґрунтується оцінка;
можливі причини проблем;
рекомендації, які можуть покращити результат.
Аудит потрібно виконувати для сторінки, яку можна відкрити в браузері. Наприклад, створимо просту сторінку в Next.js.
Файл app/page.tsx:
export default function HomePage() {
return (
<main>
<h1>Каталог книг</h1>
<p>
Знайдіть наступну книгу для читання у нашій добірці.
</p>
<section aria-labelledby="popular-books">
<h2 id="popular-books">Популярні книги</h2>
<ul>
<li>
<h3>Книга про JavaScript</h3>
<p>Практичний посібник для початківців.</p>
</li>
<li>
<h3>Вивчаємо веброзробку</h3>
<p>Основи створення сучасних вебсторінок.</p>
</li>
<li>
<h3>Архітектура застосунків</h3>
<p>Як структурувати великий програмний проєкт.</p>
</li>
</ul>
</section>
</main>
);
}Запустіть застосунок у режимі розробки:
npm run devПісля цього відкрийте сторінку за адресою:
http://localhost:3000Однак для реального аудиту краще використовувати production-збірку:
npm run build
npm run startРежим розробки Next.js має додаткові перевірки та службовий код. Через це результати Lighthouse можуть бути гіршими або не відповідати поведінці опублікованого застосунку.
Для більш реалістичного аудиту:
виконайте npm run build;
запустіть npm run start;
відкрийте сторінку на локальному сервері;
запустіть Lighthouse.
Відкрийте потрібну сторінку в Google Chrome.
Відкрийте DevTools:
клавішею F12;
або через меню браузера.
Перейдіть на вкладку Lighthouse.
Виберіть категорію Performance.
Виберіть тип пристрою:
Mobile — перевірка для мобільного пристрою;
Desktop — перевірка для настільного комп’ютера.
Натисніть Analyze page load або кнопку запуску аудиту.
Під час перевірки Lighthouse може застосувати штучне обмеження швидкості мережі та процесора. Тому результати не обов’язково будуть такими самими, як під час звичайного перегляду сторінки на вашому комп’ютері.
Після завершення перевірки Lighthouse показує оцінку від 0 до 100:
90–100 — добре;
50–89 — є що покращити;
0–49 — значні проблеми з продуктивністю.
Оцінка — це не час завантаження сторінки і не відсоток користувачів, для яких сторінка працює добре. Це узагальнений бал, розрахований на основі кількох метрик.
Тому не варто виправляти проблему лише для збільшення числа. Потрібно зрозуміти, яка саме частина взаємодії зі сторінкою є повільною.
FCP, або First Contentful Paint, — час до появи першого видимого вмісту сторінки.
Наприклад, таким вмістом може бути:
заголовок;
текст;
кнопка;
зображення.
Якщо FCP великий, користувач довго бачить порожню сторінку.
LCP, або Largest Contentful Paint, — час до відображення найбільшого видимого елемента в області перегляду.
Найбільшим елементом може бути:
великий заголовок;
основне зображення;
блок із текстом;
банер.
Орієнтовні межі LCP:
до 2.5 секунди — добре;
від 2.5 до 4 секунд — потрібно покращення;
понад 4 секунди — поганий результат.
TBT, або Total Blocking Time, — час, протягом якого JavaScript-браузер не може нормально обробляти дії користувача.
Довгі JavaScript-завдання можуть блокувати:
натискання кнопок;
прокручування;
введення тексту;
відкриття меню.
TBT є лабораторною метрикою. Вона допомагає оцінити потенційні проблеми зі швидкістю виконання JavaScript під час аудиту.
CLS, або Cumulative Layout Shift, — показник несподіваних зміщень елементів на сторінці.
Наприклад:
користувач збирається натиснути кнопку;
завантажується зображення без зарезервованого місця;
вміст зміщується;
користувач натискає вже не ту кнопку.
Орієнтовні межі CLS:
до 0.1 — добре;
від 0.1 до 0.25 — потрібно покращення;
понад 0.25 — поганий результат.
INP, або Interaction to Next Paint, — показник швидкості реакції сторінки на взаємодію користувача.
Враховуються, наприклад:
натискання;
введення тексту;
вибір елемента;
відкриття або закриття компонента.
Орієнтовні межі INP:
до 200 мс — добре;
від 200 до 500 мс — потрібно покращення;
понад 500 мс — поганий результат.
На відміну від TBT, INP належить до показників, які можуть описувати реальний досвід користувачів.
У розділі Opportunities Lighthouse показує можливості для покращення.
Для кожної рекомендації зазвичай вказано:
проблему;
можливий виграш у часі;
ресурси або елементи, яких це стосується.
Наприклад, звіт може повідомити, що потрібно:
оптимізувати зображення;
зменшити JavaScript;
видалити невикористаний код;
скоротити час відповіді сервера.
Оцінка часу є приблизною. Якщо рекомендація обіцяє економію в 500 мс, це не означає, що оцінка Performance гарантовано збільшиться на певне число балів.
У розділі Diagnostics наведено додаткову інформацію про сторінку.
Тут можуть бути дані про:
розмір DOM;
довгі завдання JavaScript;
великі ресурси;
кешування;
непотрібні запити.
Diagnostics не завжди означає пряму помилку. Це підказки для пошуку причин повільної роботи.
У розділі Passed audits відображаються перевірки, які сторінка пройшла успішно.
Цей розділ корисний для контролю вже виконаних оптимізацій. Якщо після змін певна рекомендація зникла з переліку проблем і перемістилася до успішних перевірок, зміна дала очікуваний результат.
Виконуйте аудит у такій послідовності:
Запустіть застосунок у production-режимі.
Відкрийте сторінку в Chrome.
Запустіть Lighthouse для мобільного пристрою.
Запишіть початкові значення:
Performance;
FCP;
LCP;
TBT;
CLS;
INP, якщо він доступний у звіті.
Перегляньте перші рекомендації в Opportunities.
Відкрийте відповідні діагностичні дані.
Змініть одну або кілька пов’язаних проблем.
Зберіть production-збірку повторно.
Запустіть аудит ще раз.
Порівняйте не лише загальний бал, а й окремі метрики.
Не робіть висновків за одним запуском. Результат може змінюватися через:
навантаження на комп’ютер;
стан локального сервера;
мережеві умови;
кеш браузера;
випадкові коливання часу виконання.
Для порівняння запускайте аудит кілька разів у схожих умовах.
У Next.js різні маршрути можуть мати різну продуктивність. Наприклад:
головна сторінка може бути статичною;
сторінка каталогу може завантажувати багато даних;
сторінка профілю може містити більше клієнтського JavaScript.
Тому Lighthouse потрібно запускати для кожного важливого маршруту окремо.
Компоненти з 'use client' можуть додавати JavaScript, який потрібно завантажити та виконати в браузері.
Якщо сторінка не потребує стану або обробників подій у браузері, її частину можна залишити серверним компонентом. Це допомагає не передавати зайвий код клієнту.
Не потрібно автоматично робити всі компоненти клієнтськими. Спочатку подивіться, чи справді це необхідно для роботи компонента.
Аудит запущеної через npm run dev сторінки корисний для швидкої перевірки, але він не показує точну поведінку production-версії.
Основний результат аналізуйте після:
npm run build
npm run startПід час локального аудиту сервер може відповідати швидше або повільніше, ніж сервер у production.
Локальна перевірка допомагає знайти очевидні проблеми, але остаточну оцінку потрібно підтверджувати в умовах, близьких до реальних.
Розглянемо приклад міркування:
LCP становить 4.2 секунди, а Lighthouse вказує на велике головне зображення.
Правильний висновок:
найбільший видимий елемент з’являється пізно;
потрібно перевірити його розмір і формат;
потрібно переконатися, що він не завантажується із зайвою затримкою;
після змін потрібно повторно перевірити LCP.
Неправильний висновок:
Потрібно виправити всі рекомендації Lighthouse, не перевіряючи їхній зв’язок із конкретною проблемою.
Рекомендації мають пріоритет. Спочатку виправляйте ті, що:
впливають на LCP, TBT або INP;
мають найбільшу потенційну економію;
стосуються важливих елементів сторінки;
повторюються на кількох маршрутах.
Lighthouse створює лабораторні дані. Це означає, що він перевіряє сторінку в контрольованих умовах.
Лабораторні дані корисні для:
пошуку проблем під час розробки;
порівняння змін;
перевірки конкретного маршруту;
швидкого отримання діагностики.
Але вони не описують усіх реальних користувачів. У різних людей можуть бути:
різні пристрої;
різна швидкість мережі;
інші налаштування браузера;
інші сценарії взаємодії зі сторінкою.
Тому Lighthouse — це інструмент для діагностики, а не єдине джерело оцінки продуктивності.
Режим розробки Next.js додає службові витрати й може спотворити результат.
Як уникнути: перевіряйте production-збірку через npm run build і npm run start.
Бал 85 сам по собі не пояснює проблему. Потрібно подивитися, яка метрика знизила результат.
Як уникнути: аналізуйте окремо LCP, CLS, TBT, FCP та INP.
Один запуск може дати випадково кращий або гірший результат.
Як уникнути: повторіть аудит кілька разів і порівнюйте середню картину.
Довгий список рекомендацій може відволікти від головної проблеми.
Як уникнути: починайте з рекомендацій, які мають найбільший вплив на ключові метрики.
Сторінка може бути швидкою на потужному комп’ютері, але повільною на мобільному пристрої.
Як уникнути: обов’язково запускайте аудит у режимі Mobile.
Час, вказаний у Opportunities, є оцінкою, а не гарантією.
Як уникнути: після кожної зміни повторно перевіряйте реальні метрики.
Сторінка може швидко показувати вміст, але зміщувати його під час завантаження.
Як уникнути: оцінюйте не лише швидкість появи контенту, а й стабільність макета.
Lighthouse автоматично аналізує продуктивність вебсторінки.
Для Next.js основний аудит потрібно виконувати на production-збірці.
Запускайте перевірку в режимах Mobile і Desktop, якщо важливі обидва типи пристроїв.
Аналізуйте не лише Performance Score, а й окремі метрики.
FCP показує появу першого вмісту, LCP — найбільшого елемента, TBT — блокування JavaScript, CLS — зміщення макета, INP — швидкість реакції на взаємодії.
Розділи Opportunities і Diagnostics допомагають знайти причини проблем.
Повторюйте аудит після змін і порівнюйте результати в однакових умовах.
Lighthouse дає лабораторні дані, тому його результати потрібно трактувати як інструмент діагностики, а не як повний опис досвіду всіх користувачів.