ax.SEO
🐱 🦊 🐼 🦝 🐰 🦉
Кто сегодня с нами? 🐾

Животные меняются при загрузке страницы

Главная / Блог / Оптимизация изображений для SEO: WebP, AVIF, lazy loading и компрессия

Оптимизация изображений для SEO: WebP, AVIF, lazy loading и компрессия

Оптимизируйте изображения: WebP/AVIF, lazy loading, автоматическая компрессия – улучшите LCP, Core Web Vitals и скорость индексации.
🐱
Читать проще с подсказками

Карточки, чек-листы, таблицы и примеры помогают быстро найти нужный ответ.

✅ чек-листы 📈 SEO-практика ⚡ быстро

Изображения занимают большую часть веса страниц и напрямую влияют на Core Web Vitals. В этом руководстве рассматриваются современные форматы, lazy loading и автоматическая компрессия, а также практические шаги, которые помогут улучшить индексацию и скорость загрузки.

Оптимизация изображений начинается с выбора правильного формата, затем внедрения lazy loading и автоматической компрессии. После этого необходимо проверить влияние на Core Web Vitals и корректно настроить серверную отдачу.

1. Почему изображения критичны для SEO

Изображения – один из ключевых факторов, определяющих скорость и стабильность страницы. Большой вес медиа‑файлов напрямую повышает LCP, а неотложная загрузка блокирующего контента может вызвать CLS, если размеры изображений не заданы. Core Web Vitals – метрика, в которую Google включил пользовательский опыт; чем выше LCP и чем ниже CLS, тем выше вероятность того, что поисковый робот оценит страницу как «пользовательски‑дружелюбную».

В UX изображения создают первое впечатление, формируют визуальную иерархию, помогают пользователю быстро понять суть контента. При медленной загрузке картинки «потеряют» свой эффект: пользователь может уйти, не дочитав текста, что снижает показатель времени на странице и увеличивает показатель отказов. Эти сигналы учитываются алгоритмами ранжирования.

Google применяет «Page Experience» как фактор ранжирования. Если LCP превышает 2,5 с, CLS выше 0,1, сайт может получить «низкий» рейтинг в поиске. Кроме того, при длительной задержке загрузки изображения поисковый бот может не проиндексировать контент, расположенный ниже картинки, тем самым упустив важную информацию.

Таким образом, оптимизация изображений – не просто экономия трафика, а прямой вклад в Core Web Vitals, улучшение пользовательского опыта и защита от потенциальных штрафов за медленную загрузку.

2. Современные форматы изображений: WebP, AVIF, JPEG XL

ПараметрWebPAVIFJPEG XL
Тип сжатияLossy / LosslessLossy / LosslessLossy / Lossless
Сравнительно к JPEG (lossy)–15 % – 30 %–30 % – 50 %–25 % – 45 %
Поддержка браузеровChrome, Edge, Safari, Firefox (с 2019)Chrome, Edge, Safari (с 2022), Firefox (с 2023)Chrome, Edge, Safari (с 2023), Firefox (с 2024)
CMS‑поддержкаWordPress (плагин), Joomla, Drupal, HugoWordPress (плагин), Hugo, JekyllWordPress (плагин), Hugo, Jekyll, Drupal
Производительность в мобильных сетяхУменьшает время загрузки на 20 %–30 % при 3GУменьшает время загрузки на 30 %–45 % при 3GУменьшает время загрузки на 25 %–40 % при 3G
Производительность в десктопных сетяхСокращает трафик на 15 %–25 %Сокращает трафик на 25 %–35 %Сокращает трафик на 20 %–30 %
SEO‑влияниеБыстрее индексируется, уменьшает Core Web VitalsБыстрее индексируется, повышает LCP/CLSБыстрее индексируется, улучшает LCP, но требует больше CPU

WebP – надёжный компромисс, поддержка почти всех CMS и браузеров. AVIF даёт лучшую экономию, но требует более новых браузеров и немного больше ресурсов CPU. JPEG XL сочетает в себе гибкость и растущую поддержку, но пока не так широко интегрирован в плагины. Выбирайте формат, исходя из целевой аудитории: мобильные пользователи выигрывают от AVIF, десктоп – от WebP, а для универсальности можно использовать WebP + AVIF fallback.

3. Lazy loading: как реализовать и что проверить

  1. Вставьте атрибут loading="lazy" в все теги <img> и <source>.
  2. Подключите polyfill IntersectionObserver для старых браузеров (пример: https://polyfill.io/v3/polyfill.min.js?features=IntersectionObserver).
  3. Добавьте скрипт‑обработчик, который наблюдает за изображениями и задаёт src при пересечении видимой области.
  4. Проверьте работу в Chrome DevTools: откройте вкладку Network, фильтруйте по типу “Img”, убедитесь, что изображения загружаются только при прокрутке.
  5. Проверьте индексацию: в Google Search Console откройте “URL Inspection” для страницы, посмотрите, что все <img> присутствуют в отрендерённом HTML. Затем в “Coverage” убедитесь, что URL‑адреса изображений находятся в индексе.

document.addEventListener('DOMContentLoaded', () => {
  const lazyImages = document.querySelectorAll('img[loading="lazy"], source[loading="lazy"]');
  if ('IntersectionObserver' in window) {
    const observer = new IntersectionObserver((entries, obs) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) {
          const img = entry.target;
          if (img.dataset.src) img.src = img.dataset.src;
          if (img.dataset.srcset) img.srcset = img.dataset.srcset;
          obs.unobserve(img);
        }
      });
    }, { rootMargin: '200px', threshold: 0 });
    lazyImages.forEach(img => observer.observe(img));
  } else {
    // Fallback: load all immediately
    lazyImages.forEach(img => {
      if (img.dataset.src) img.src = img.dataset.src;
      if (img.dataset.srcset) img.srcset = img.dataset.srcset;
    });
  }
});

4. Автоматическая компрессия: инструменты и настройка CI/CD

Автоматическая компрессия – это этап, где исходные изображения проходят через локальные и облачные инструменты, уменьшая размер без заметной потери качества, и интегрируются в CI/CD. Включаем imagemin для PNG/JPG, Sharp для WebP/AVIF, TinyPNG API для облачной оптимизации. Конфигурируем в Webpack/Vite через плагины, а после сборки запускаем скрипт проверки размеров.

// webpack.config.js
const ImageminPlugin = require('imagemin-webpack-plugin').default;
const imageminMozjpeg = require('imagemin-mozjpeg');
const imageminPngquant = require('imagemin-pngquant');

module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpe?g|gif|svg)$/i,
        use: [
          {
            loader: 'sharp-loader',
            options: {
              quality: 80,
              webp: true,
              avif: true
            }
          }
        ]
      }
    ]
  },
  plugins: [
    new ImageminPlugin({
      test: /\.(jpe?g|png|gif|svg)$/i,
      pngquant: { quality: [0.7, 0.85] },
      mozjpeg: { quality: 80 },
      gifsicle: { optimizationLevel: 2 }
    })
  ]
};

// vite.config.js
import { defineConfig } from 'vite';
import viteImagemin from 'vite-plugin-imagemin';

export default defineConfig({
  plugins: [
    viteImagemin({
      gifsicle: { optimizationLevel: 3 },
      optipng: { optimizationLevel: 5 },
      mozjpeg: { quality: 80 },
      pngquant: { quality: [0.7, 0.85] },
      svgo: {},
      webp: { quality: 80 },
      avif: { quality: 80 }
    })
  ]
});

// scripts/optimize-tinypng.js
const tinify = require('tinify');
tinify.key = process.env.TINYPNG_KEY;

const fs = require('fs');
const path = require('path');

const srcDir = path.join(__dirname, '..', 'dist');
const files = fs.readdirSync(srcDir).filter(f => /\.(jpe?g|png)$/i.test(f));

files.forEach(file => {
  const src = path.join(srcDir, file);
  const dest = src;
  tinify.fromFile(src).toFile(dest);
});

// scripts/check-sizes.js
const fs = require('fs');
const path = require('path');

const dir = path.join(__dirname, '..', 'dist');
const maxSize = 200 * 1024; // 200KB

fs.readdirSync(dir).forEach(file => {
  const stats = fs.statSync(path.join(dir, file));
  if (stats.size > maxSize) {
    console.warn(\`\${file} is \${stats.size} bytes – exceeds \${maxSize}\`);
  }
});

5. Проверка результатов: Lighthouse, PageSpeed Insights, Core Web Vitals

ПараметрДо оптимизацииПосле оптимизацииЦель
LCP (Largest Contentful Paint)3.9 с1.7 с≤ 2.5 с
CLS (Cumulative Layout Shift)0.350.07≤ 0.1
FID (First Input Delay)120 мс45 мс≤ 100 мс
Качество изображений в Search ConsoleНе индексированы 12 изображенийИндексированы 28 изображенийВсе критические изображения индексированы
  • Запустить Lighthouse в DevTools, сохранить отчёт.
  • Проверить Core Web Vitals в Google PageSpeed Insights (desktop и mobile).
  • В Search Console перейти в Coverage → Images, убедиться, что статус «Indexed» для всех нужных файлов.
  • Сравнить показатели LCP, CLS, FID до и после оптимизации, фиксировать разницу.
  • Проверить, что в отчёте Lighthouse нет ошибок «Image size too big» и «Image dimensions too large».
  • Убедиться, что в отчёте PageSpeed Insights метрика «Largest Contentful Paint» находится в пределах 2 с.
  • Проверить, что в Search Console нет «Blocked» или «Error» статусов для изображений.
  • Сохранить результаты в таблицу для дальнейшего анализа.

6. Частые ошибки и как их избежать

  • Неправильный MIME‑тип
    • Проблема: поисковые боты не распознают изображение, индексирует его как текст, а не медиа.
    • Избегаем: в заголовке ответа сервера ставим корректный тип (image/jpeg, image/webp, image/avif). Проверяем через curl -I URL и в DevTools Network.
  • Отсутствие атрибутов width/height
    • Проблема: браузер не знает размеры, создаёт «layout shift», ухудшает Core Web Vitals.
    • Избегаем: добавляем width и height в тег <img> либо задаём их через CSS, используя aspect-ratio для современных браузеров.
  • Неоптимизированные превью в соцсетях
    • Проблема: при шаринге ссылка открывается с большим файлом, увеличивает время загрузки, снижает CTR.
    • Избегаем: генерируем отдельные «thumbnail» в формате WebP/AVIF, размером не более 1200 px, и указываем их в мета‑тегах og:image и twitter:image.

7. План внедрения и сроки

  1. Неделя 1–2: Анализ текущего состояния
    Сформируйте baseline: соберите метрики загрузки изображений, Core Web Vitals, процент использования WebP/AVIF. Проверьте, какие страницы не используют lazy loading, какие форматы загружаются в больших размерах. Запишите все найденные проблемы в таблицу.
  2. Неделя 3: Выбор инструментов
    Оцените варианты компрессии: ImageMagick, TinyPNG API, Squoosh CLI. Выберите конвертер WebP/AVIF, который поддерживает ваш стек (Node, PHP, CMS‑плагины). Согласуйте с dev‑командой, какие скрипты будут запускаться в CI/CD и как будет происходить кэширование в Service Worker.
  3. Неделя 4–5: Пилотный запуск на одной категории
    Выберите категорию со средним трафиком (например, «Товары для дома»). Внедрите lazy loading через атрибут loading="lazy" и замените все изображения на WebP/AVIF. Запустите автоматическую компрессию в CI, проверьте, что размер файлов сократился минимум на 30 %. Сравните метрики до и после, убедитесь, что скорость загрузки не ухудшилась.
  4. Неделя 6–8: Полный релиз
    После успешного пилота масштабируйте изменения на все категории. Обновите шаблоны, включите кэширование изображений в Service Worker с стратегией stale‑while‑revalidate. Добавьте fallback‑изображения в формате JPEG/PNG для старых браузеров. Проведите A/B‑тестирование, чтобы убедиться, что пользовательский опыт сохранен и показатели CTR не падают.
  5. Неделя 9+: Мониторинг
    Еженедельно проверяйте Core Web Vitals, скорость загрузки страниц, количество 404‑изображений. Используйте Search Console, Lighthouse, и внутренний Dashboard. Если показатели падают, откатитесь к предыдущей версии или скорректируйте уровень компрессии. Планируйте пересмотр стратегии каждые 3‑4 месяца.

8. Мониторинг после запуска

После запуска оптимизации изображений ключевое внимание уделяется постоянному мониторингу влияния на поисковую выдачу и пользовательский опыт. Основные источники данных – Search Console, Core Web Vitals в Google Analytics и сервисы мониторинга. Настройте регулярный экспорт отчётов, чтобы видеть тренды и отклонения.

МесяцFCP (с)LCP (с)CLSTBT (мс)Speed Index (с)
Январь1.21.80.051201.5
Февраль1.11.60.041001.4
  • Экспортировать отчёты из Search Console каждые 15 дней.
  • Сравнивать Core Web Vitals за последние 3 месяца, отмечая отклонения.
  • Настроить автоматические алерты в Google Data Studio при падении LCP > 2.5 с или CLS > 0.1.
  • Проверять изменения в CTR и позициях для страниц с изменёнными изображениями.
  • Регулярно обновлять метрики в таблицах мониторинга.

Вопросы и ответы

Какие форматы изображений лучше всего подходят для SEO?

Лучшие форматы для SEO – WebP и AVIF, которые дают 30‑50 % меньший размер без потери качества. Для прозрачности PNG остаётся актуальным, а JPEG 2000 и JPEG XL подходят для больших фотосетей. Выбирайте формат, поддерживаемый целевой аудиторией.

Как автоматически сжимать изображения при загрузке сайта?

Автоматическое сжатие можно настроить на этапе загрузки. В CMS подключите плагин (EWWW, ShortPixel) или используйте сборщик (Gulp, Webpack) с ImageMagick. Укажите порог качества (70‑80 % JPEG, lossless PNG) и включите конвертацию в WebP/AVIF.

Нужно ли использовать lazy loading для всех изображений?

Lazy loading полезен почти для всех изображений, кроме тех, что находятся в зоне видимости при открытии страницы (hero‑изображения). Для остальных используйте атрибут loading=lazy или JavaScript‑плагины. Это ускорит первый байт и снизит нагрузку на сервер.

Как выбрать оптимальный размер изображения для SEO?

Оптимальный размер определяется устройством пользователя. Используйте srcset и sizes, чтобы браузер выбирал нужный вариант. Не отдавайте изображения шириной более 1920 px, если пользователь не использует 4K‑монитор. Это экономит трафик и ускоряет загрузку.

Как проверить, что изображения оптимизированы?

Проверьте оптимизацию через Lighthouse, PageSpeed Insights или GTmetrix – они показывают размер, формат и время загрузки. Также можно использовать утилиту ImageOptim или онлайн‑сервис TinyPNG. Сравните результаты до и после изменений.

Какие плагины для WordPress помогают с оптимизацией?

Для WordPress популярны EWWW Image Optimizer, ShortPixel, Imagify и Smush. Они автоматически сжимают, конвертируют в WebP/AVIF и создают кэш‑версии. Выбирайте плагин, который поддерживает ваш тип хостинга и имеет бесплатный тариф.

Как настроить CDN для изображений?

Настройте CDN, указав ваш домен как источник изображений. Включите кэш‑контроль (max-age, immutable) и настройте правила для WebP/AVIF. Убедитесь, что заголовки Content‑Type корректны, чтобы браузер распознавал формат.

Как избежать потери качества при сжатии?

Чтобы не потерять качество, применяйте lossless‑сжатие PNG, а JPEG – 70‑80 % качества. Тестируйте визуально и сравнивайте с оригиналом. Используйте инструменты, как JPEG‑optim, для проверки метрик PSNR или SSIM.

Как измерить влияние оптимизации на ранжирование?

Влияние на ранжирование измеряется через Core Web Vitals, скорость загрузки и CTR. Сравните метрики до и после оптимизации в Search Console и аналитике. Результаты зависят от конкуренции и алгоритмов поисковика.

Можно ли использовать WebP/AVIF для всех изображений?

WebP/AVIF можно использовать для всех изображений, но только если браузер их поддерживает. В HTML применяйте <picture> с fallback‑изображением JPEG/PNG. Это гарантирует совместимость и экономию трафика.

Важно

Материал носит информационный характер. Перед внедрением рекомендаций учитывайте нишу, регион, конкурентов, текущее состояние сайта и бизнес-цели проекта.

Редакционная проверка

Материал подготовлен и проверен редакцией AX.SEO

Проверено
AX
Автор Редакция AX.SEO
Digital-редактор 7 лет опыта

Редакция AX.SEO готовит материалы о SEO, разработке, AI, аналитике, маркетинге и росте digital-проектов.

Проверил Александр SEO
SEO-специалист 10 лет опыта

Проверяет практическую применимость рекомендаций, корректность терминов и соответствие материала digital-тематике.

AX.SEO объясняет digital простым языком: без магии, пустых обещаний и “секретных кнопок роста”.