Ви коли-небудь заходили на сторінку, особливо з мобільного, і довго чекали, поки завантажаться всі картинки, відео та інші "важкі" штуки? Погодьтеся, дратує. Саме для боротьби з цим очікуванням і придумали хитру технологію — Lazy Loading, або "ліниве завантаження". Якщо коротко, це підхід, коли контент (особливо той, що не видно одразу) завантажується не весь разом, а лише тоді, коли він дійсно потрібен користувачеві, зазвичай — при прокручуванні сторінки. Це один із ключових методів, що забезпечує відкладене завантаження контенту і робить сайт суб'єктивно набагато швидшим.
Уявіть, що ви переїхали. Замість того, щоб одразу розпаковувати абсолютно всі коробки, ви розпаковуєте тільки найнеобхідніше на кухні, а речі для спальні — лише коли дійдете до спальні. Lazy Loading працює за схожим принципом: браузер спочатку завантажує тільки ту частину контенту, яку видно на першому екрані.
Решта контенту (картинки, відео, блоки нижче по сторінці) чекає своєї черги. Коли користувач починає скролити сторінку, і певний елемент наближається до видимої зони (viewport), спрацьовує тригер, і браузер "довантажує" цей конкретний елемент. Простіше кажучи, контент завантажується "на вимогу", а не весь одразу.
Раніше для відстеження видимості елементів використовували обробники події скролу, що могло навантажувати браузер. Сучасний та ефективний підхід — це використання Intersection Observer API. Це ніби спеціальний "спостерігач" від браузера, який дуже ефективно визначає, коли елемент з'являється у видимій зоні, і дає команду на його завантаження, не створюючи зайвого навантаження.
Впровадження lazy load сайт дає цілий букет переваг:
Найголовніше — зменшується початковий обсяг даних, які потрібно завантажити. Сторінка починає відображатися значно швидше (покращуються показники FCP та LCP з Core Web Vitals). Користувач не бачить білий екран, а майже одразу отримує контент першого екрану.
Користувачі, особливо з мобільних пристроїв або з обмеженим інтернет-тарифом, скажуть вам "дякую". Навіщо їм завантажувати десятки мегабайт картинок у футері, якщо вони до нього навіть не доскролять? Lazy Loading завантажує лише те, що потрапляє в поле зору.
При першому завантаженні сторінки сервер отримує менше запитів одночасно, що може бути критично для сайтів з високою відвідуваністю.
Навіть якщо сторінка містить багато контенту, завдяки "лінивому завантаженню" вона здається легкою та швидкою. Поступове відображення контенту при скролі сприймається набагато краще, ніж довге очікування повного завантаження.
Технологію можна (і варто!) застосовувати до різних типів контенту:
Найпоширеніший кандидат на "ліниве завантаження". Величезні фотогалереї чи просто багато ілюстрацій у статті можуть суттєво гальмувати сайт.
Вбудовані відео, особливо з YouTube чи Vimeo, можуть бути дуже "важкими". Оптимізація відео на сторінці за допомогою Lazy Load працює так:
Карти Google Maps, віджети соціальних мереж, рекламні банери — все це часто вбудовується через `
Хоча термін "lazy loading" тут вживається рідше, існують схожі техніки оптимізації:
Новинні стрічки, каталоги товарів, коментарі — замість того, щоб завантажувати сотні елементів одразу, використовують:
Це класичний приклад прогресивне завантаження даних.
Способів є кілька, вибір залежить від ваших потреб та технічних можливостей:
Найпростіший варіант для зображень та iframe — додати `loading="lazy"`. Підтримується більшістю сучасних браузерів. Просто, швидко, не потребує JavaScript.
```htmlЕфективний підхід для задоволення вимог Google та потреб користувачів
Наша команда завжди готова надати необхідну підтримку та відповісти на всі ваші запити.