Lazy loading изображений: плюсы и минусы для SEO

Lazy loading изображений: плюсы и минусы для SEO

Ленивая загрузка (lazy loading) изображений — техника, при которой картинки подгружаются не сразу при открытии страницы, а когда пользователь доскролливает до них. Грамотно внедрённый lazy loading ускоряет отрисовку и помогает Core Web Vitals; внедрённый небрежно — прячет от поисковика контент и роняет LCP. Разбираем, где граница между пользой и вредом для SEO под Яндекс и Google и как настроить отложенную загрузку без потери индексации.

Что такое lazy loading и зачем он нужен

При обычной загрузке браузер запрашивает все изображения сразу — даже те, что далеко внизу и пользователь их, возможно, никогда не увидит. На странице с 40–60 картинками это десятки лишних HTTP-запросов и мегабайты трафика в первые секунды. Lazy loading откладывает загрузку изображений за пределами вьюпорта (below the fold) до приближения к видимой области.

Цель — снизить объём данных при первой отрисовке и ускорить интерактивность. Для поиска это косвенный, но реальный сигнал: и Яндекс (через скорость и поведенческие факторы), и Google (через Core Web Vitals) учитывают, как быстро страница становится пригодной к работе.

Плюсы и минусы для SEO

Аспект Плюс при верной настройке Риск при ошибке
Скорость первой отрисовки Меньше запросов и байтов в начале → быстрее First Contentful Paint
LCP (Core Web Vitals) Ускоряется, если LCP-картинка НЕ ленивая Падает, если ленивым сделали главное изображение экрана
CLS Стабилен при заданных width/height Скачки макета, если размеры не указаны
Индексация картинок Сохраняется при нативном loading=lazy Картинки выпадают из индекса при JS без <noscript>
Трафик и хостинг Экономия на трафике и нагрузке сервера

Ключевая мысль: lazy loading полезен для SEO ровно до тех пор, пока применяется к картинкам ниже первого экрана и не мешает роботу видеть контент.

Способы внедрения

Нативный атрибут loading="lazy". Самый надёжный вариант: поддерживается всеми актуальными браузерами и корректно читается роботами. Картинка остаётся в исходном src, поэтому Яндекс и Google её индексируют.

<img src="/img/banner.webp" width="800" height="450" alt="Гранитный памятник" loading="lazy">

JS-библиотеки (LazySizes, lozad на IntersectionObserver). Дают тонкий контроль: прелоад по расстоянию, фоновые изображения, адаптивные srcset. Минус — реальный src подменяется на data-src, и без подстраховки робот видит пустоту.

CSS-фоны (background-image). Нативный атрибут их не покрывает; нужен JS или отказ от ленивости для важных картинок.

Рекомендация: начинать с нативного loading="lazy", к библиотекам переходить только при нехватке его функционала.

Главная ошибка: ленивый LCP-элемент

Largest Contentful Paint почти всегда — крупное изображение первого экрана (баннер, главное фото товара, обложка статьи). Повесьте на него loading="lazy" — браузер отложит загрузку, и LCP вырастет, иногда за пределы норматива 2,5 с. Прямой удар по Core Web Vitals.

Правило: всё, что видно без скролла, грузится обычно. LCP-картинке полезно задать fetchpriority="high", чтобы браузер забрал её в первую очередь:

<img src="/img/hero.webp" width="1200" height="600" alt="..." fetchpriority="high">

⚠️ РИСК. Массовые CMS-плагины и темы нередко вешают loading="lazy" на ВСЕ изображения подряд, включая первый экран. После установки такого плагина проверьте, что hero и логотип не стали ленивыми — иначе ухудшите ровно ту метрику, ради которой всё затевалось.

Как сохранить индексацию изображений

Нативный loading="lazy" проблем не создаёт: робот Яндекса и Googlebot видят src в исходном HTML. Проблемы начинаются с JS-реализаций, где настоящий путь спрятан в data-src, а в src — заглушка. Что делает картинки индексируемыми при JS-lazy:

  • Дубль в <noscript> — внутри тега обычный <img> с реальным src; робот без выполнения JS получит ссылку на файл.
  • Картиночный sitemap — sitemap.xml с тегами <image:image> помогает Google и Яндексу найти все картинки независимо от способа подгрузки.
  • Корректный alt у каждого значимого изображения — фактор ранжирования в поиске по картинкам.

Проверять результат нужно фактически: через инструмент проверки URL в Яндекс.Вебмастере и Google Search Console смотрите, как робот рендерит страницу и видны ли в ней изображения. О причинах, по которым роботы не видят JS-контент, — в материале про JavaScript и SEO.

Lazy loading и мобильная выдача

Поскольку и Яндекс, и Google работают по принципу mobile-first индексации, оценка скорости и Core Web Vitals идёт по мобильной версии. На смартфонах канал медленнее, а вьюпорт меньше — ниже сгиба больше картинок, и отложенная загрузка даёт здесь наибольший выигрыш. Но и риск выше: легко отложить изображение, которое на десктопе было ниже сгиба, а на мобильном попадает в первый экран. Тестируйте LCP отдельно для мобильной эмуляции.

Чек-лист корректного внедрения

Шаг Что проверить
1 Первый экран (hero, логотип) — БЕЗ loading="lazy"
2 LCP-изображению задан fetchpriority="high"
3 У всех <img> указаны width и height (защита от CLS)
4 Изображения ниже сгиба — loading="lazy"
5 При JS-lazy — дубль в <noscript> и/или image-sitemap
6 Картинки в формате WebP/AVIF, заполнен alt
7 Проверка рендера в Вебмастере и Search Console
8 Замер LCP/CLS отдельно для мобильной версии

Мини-пример

На сайте granit-memory.ru каталог памятников содержит десятки карточек с фото гранитных изделий, и до оптимизации все они грузились при открытии категории. Решение: главное фото первого ряда оставили с обычной загрузкой и fetchpriority="high", карточки ниже сгиба получили нативный loading="lazy", всем <img> проставили width/height и осмысленные alt. В итоге браузер запрашивает при старте меньше файлов, а проверка URL в Яндекс.Вебмастере подтвердила, что все фото видны роботу — типовой паттерн для каталога: быстрый старт без потери индексации.

Лучше всего lazy loading работает в связке с оптимизацией изображений и скоростью загрузки сайта: сам по себе он не заменит сжатие и WebP/AVIF.

FAQ

Влияет ли lazy loading на ранжирование напрямую?
Нет, отдельного фактора «использует lazy loading» не существует. Влияние косвенное: через скорость, Core Web Vitals у Google и поведенческие факторы у Яндекса. Важна не технология, а итоговые метрики.

Можно ли ставить loading="lazy" на все изображения?
Нет. Всё, что видно без прокрутки (особенно LCP-элемент), грузится сразу. Ленивыми делают только картинки ниже первого экрана.

Индексирует ли Яндекс изображения с отложенной загрузкой?
При нативном loading="lazy" — да, реальный src присутствует в HTML. При JS-реализации с data-src нужны подстраховки: дубль в <noscript> или картиночный sitemap, иначе фото могут выпасть из индекса.

Как проверить, что lazy loading не сломал страницу?
Замерьте LCP и CLS в PageSpeed Insights или Lighthouse для мобильной версии, а индексацию изображений — через проверку URL в Яндекс.Вебмастере и Google Search Console.

Материал подготовлен экспертами Chrome Media: внедряем lazy loading без потери индексации и ускоряем Core Web Vitals коммерческих сайтов.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *