Загрузка...
Загрузка...
Руководство по отложенной загрузке изображений: нативный loading=lazy, Intersection Observer, совместимость и типичные ошибки.
Подробное руководство по оптимизации изображений для поисковых систем. WebP, сжатие, lazy loading, alt-теги и другие техники для улучшения SEO и производительности сайтов.
SEOПолное руководство по оптимизации Largest Contentful Paint. Причины медленного LCP, методы диагностики, практические решения для изображений, шрифтов и серверной инфраструктуры.
SEOСравнение WebP и AVIF: сжатие, поддержка браузерами, конвертация, fallback. Практические рекомендации для веб-разработки.
SEOАктуальное руководство по Core Web Vitals в 2026 году. LCP, INP, CLS — как измерять, анализировать и улучшать показатели для SEO и пользовательского опыта.
Поделитесь с коллегами или изучите другие материалы блога
Lazy loading (отложенная загрузка) — техника, при которой изображения загружаются только при приближении к области просмотра. Это уменьшает начальный объём данных и ускоряет загрузку страницы. В этой статье — как настроить lazy loading правильно.
| Преимущество | Описание |
|---|---|
| Быстрая начальная загрузка | Меньше запросов и данных при первом рендере |
| Экономия трафика | Изображения ниже экрана не загружаются, если пользователь не прокрутил |
| Лучший LCP | Ресурсы концентрируются на контенте выше сгиба |
| Меньше нагрузки на сервер | Меньше одновременных запросов |
Для страниц с большим количеством изображений (каталоги, галереи, блоги) эффект особенно заметен.
Современные браузеры поддерживают атрибут loading="lazy" у <img> и <iframe>.
<img src="photo.jpg" alt="Описание" loading="lazy" width="800" height="600">
Браузер откладывает загрузку изображения, пока оно не приблизится к viewport (с запасом, например 1250px). Точное поведение зависит от браузера.
Указывайте width и height, чтобы избежать сдвига контента (CLS) при загрузке:
<img src="photo.jpg" alt="Описание" loading="lazy" width="800" height="600">
Без размеров браузер не знает соотношение сторон и при загрузке картинки контент «прыгает».
Chrome 76+, Firefox 75+, Safari 15.4+, Edge 79+. Для старых браузеров изображение загрузится сразу — деградация безопасна.
Не используйте loading="lazy" для:
Эти изображения должны загружаться сразу. Для них либо не указывайте loading, либо используйте loading="eager" (значение по умолчанию).
<!-- Hero-изображение — без lazy -->
<img src="hero.jpg" alt="Главный баннер" width="1920" height="1080">
<!-- Контент ниже сгиба — lazy -->
<img src="product-1.jpg" alt="Товар 1" loading="lazy" width="400" height="400">
<iframe src="https://example.com/embed" loading="lazy" width="600" height="400"></iframe>
Полезно для встроенных видео, карт и виджетов.
Для кастомной логики (например, placeholder, анимация появления) можно использовать Intersection Observer:
const images = document.querySelectorAll('img[data-src]');
const imageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src || img.getAttribute('data-src');
img.removeAttribute('data-src');
observer.unobserve(img);
}
});
});
images.forEach(img => imageObserver.observe(img));
Разметка:
<img data-src="photo.jpg" alt="Описание" width="800" height="600" src="placeholder.jpg">
Для большинства случаев нативного loading="lazy" достаточно. JavaScript нужен при особых требованиях (blur-up, кастомные placeholder).
| Метрика | Влияние |
|---|---|
| LCP | Положительное — меньше конкуренции за bandwidth при начальной загрузке |
| CLS | Нейтральное при указанных width/height; без них — риск сдвигов |
| FID/INP | Нейтральное или положительное — меньше работы при загрузке |
Проверка: Web Vitals на reChecker.
| Ошибка | Решение |
|---|---|
| Lazy для LCP-изображения | Убрать loading="lazy" с hero/первого экрана |
| Нет width/height | Добавить для предотвращения CLS |
| Lazy для всех img подряд | Первые 1–2 изображения оставить без lazy |
| data-src без fallback | При отключённом JS изображение не загрузится — использовать noscript с обычным img |
| Проверка | Действие |
|---|---|
| LCP-изображение без lazy | Проверить hero, первый экран |
| Остальные изображения с loading="lazy" | Добавить атрибут |
| width и height у всех img | Указать для CLS |
| iframe с отложенной загрузкой | Добавить loading="lazy" |
| Тест в браузере | Проверить, что ниже сгиба загружается при скролле |
Lazy loading ускоряет загрузку страницы и снижает трафик. Используйте нативный loading="lazy" для изображений ниже сгиба, не применяйте его к LCP-элементам и обязательно указывайте width/height. Проверяйте результат через проверку изображений и Web Vitals на reChecker. Дополнительно — оптимизация изображений и WebP/AVIF.
CSS background-image не поддерживает loading="lazy". Варианты:
При печати страницы отложенные изображения могут не загрузиться. Решение: медиа-запрос @media print с принудительной загрузкой или предупреждение пользователю. Для большинства сайтов это не критично.
В каруселях часто скрыты изображения вне текущего слайда. Рекомендации:
Google выполняет прокрутку и загружает отложенные изображения. Контент индексируется. Не применяйте lazy к LCP-элементу — это может ухудшить метрики.
Нет. Изображения в первом экране должны загружаться сразу. Lazy для них бесполезен и может навредить LCP.
Да. Атрибут loading="lazy" поддерживается для iframe. Полезно для встроенных видео и виджетов.