Оптимизация изображений: адаптивные изображения, WebP, AVIF и LCP

Выберите размеры и форматы изображений, напишите адаптивную разметку, дайте приоритет изображению LCP и проверьте качество на реальных экранах.

Одно исходное изображение, отдаваемое в трёх адаптивных размерах

Коротко

Подгоняйте изображения под место, где они отображаются, сравнивайте сжатие на реальном файле и предоставляйте адаптивные варианты. Главное изображение в первом экране загружайте сразу; вспомогательные изображения ниже по странице — лениво.

Начните с изображения, которое читатель действительно видит

Изучите отображаемые размеры, выбранный ресурс, объём переданных байтов и роль изображения на странице. Схема с мелкими подписями требует иного подхода, чем фотография. Большой исходный файл не обязательно отдавать каждому посетителю без изменений.

Найдите в трассировке фактический элемент Largest Contentful Paint. Это может быть текст, а не изображение. Оптимизация миниатюры ниже первого экрана не исправит никак не связанную с ней таблицу стилей, блокирующую рендеринг.

Выбирайте формат и качество для каждого файла

Сравнивайте AVIF и WebP с текущими JPEG или PNG в тех размерах, которые реально используются. Проверяйте края, градиенты, оттенки кожи, прозрачность и текст. Экономия зависит от содержимого и настроек кодировщика; универсальный процент — бесполезная цель качества.

Используйте SVG для подходящих схем и иконок, чтобы подписи и линии оставались чёткими, и при необходимости держите растровую версию для платформ, где ими делятся. Важные пояснения должны быть и в HTML. Не называйте изображение со сжатием с потерями «без потерь» только потому, что оно получает высокую оценку перцептивного сходства.

Пишите адаптивную разметку в соответствии с макетом

Следующий пример предполагает изображение на всю ширину в колонке контента шириной 48rem с отступами 1rem на маленьких экранах. Подстройте sizes под свой реальный макет. Браузер выбирает ресурс по ширинам кандидатов, размеру места и условиям устройства.

<picture>
  <source type="image/avif"
    srcset="/media/diagram-480.avif 480w,
            /media/diagram-960.avif 960w,
            /media/diagram-1440.avif 1440w"
    sizes="(max-width: 50rem) calc(100vw - 2rem), 48rem">
  <img src="/media/diagram-960.webp"
    srcset="/media/diagram-480.webp 480w,
            /media/diagram-960.webp 960w,
            /media/diagram-1440.webp 1440w"
    sizes="(max-width: 50rem) calc(100vw - 2rem), 48rem"
    width="1440" height="900"
    loading="eager" fetchpriority="high" decoding="async"
    alt="Public requests pass through a cache before the origin">
</picture>

Для вспомогательного изображения за пределами экрана используйте ленивую загрузку и обычный приоритет. Ширина и высота резервируют пропорции; CSS по-прежнему может сделать изображение резиновым. Держите одинаковые пропорции у всех вариантов, если вы сознательно не используете арт-дирекшн.

По возможности используйте конвейер изображений WordPress

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

Альтернативный текст должен передавать информацию, которую добавляет изображение. Для декоративных повторов соседнего заголовка можно оставить пустой атрибут alt. Не превращайте альтернативный текст в список ключевых слов.

Проверьте доставку и поведение кеша

  • Проверьте выбранные URL изображений на узких и широких экранах, включая экраны с высокой плотностью пикселей.
  • Убедитесь, что основное изображение можно обнаружить, не дожидаясь JavaScript.
  • Оценивайте качество изображения в реальном размере отображения, а не только в маленьком превью.
  • Убедитесь, что медиафайлы за пределами экрана не занимают основную часть первоначальной передачи.
  • Если CDN согласовывает форматы, проверьте, что ключи кеша правильно различают ответы.
  • Версионируйте изменённые файлы или очищайте соответствующие кеши, чтобы читатели получали обновление.

Частые вопросы

Нужен ли CDN для изображений?

CDN с преобразованиями может упростить работу с большой и часто меняющейся медиатекой. Небольшому блогу часто достаточно нескольких сгенерированных вариантов и обычного статического кеширования. Сравните постоянные расходы, сложность эксплуатации и реальную экономию трафика, прежде чем добавлять ещё один сервис.

Нужна ли ленивая загрузка для главного изображения на первом экране?

Обычно нет, если оно видно сразу или является элементом LCP страницы. Сделайте его URL обнаруживаемым в исходном HTML, предоставьте подходящие адаптивные варианты и выборочно рассмотрите высокий приоритет загрузки. Лениво загружайте вспомогательные изображения, которые начинаются ниже первого экрана.

AVIF всегда лучше WebP?

Ни один формат и ни одна настройка качества не выигрывают для всех изображений. Сравнивайте размер и визуальное качество на реальном файле, включая тонкие подписи, градиенты и прозрачность. Сохраняйте подходящий запасной вариант и проверяйте, какой файл выбирает браузер.

Зачем изображениям ширина и высота, если макет адаптивный?

Эти атрибуты задают собственные пропорции, чтобы браузер мог зарезервировать место до загрузки изображения. CSS по-прежнему может сделать его резиновым. Указывайте правильные размеры и адаптивные источники, а затем проверяйте реальный макет на сдвиги. Руководство по ускорению WordPress показывает место доставки изображений в общем процессе работы над производительностью.

Источники и дополнительное чтение

Читайте дальше

Продолжите с диагностикой Core Web Vitals или полным чек-листом производительности.

Paul Edward

Автор: Paul Edward

Senior full-stack веб-разработчик: PHP, Laravel, WordPress и веб-системы с поддержкой ИИ.

Подробнее о Поле

Leave a Reply

Your email address will not be published. Required fields are marked *

Загружается быстрая проверка… (нужен JavaScript)

Читать дальше

Бриф проекта Шаг 1 из 2 · Задача

Что вы хотите создать?

Для начала вполне достаточно одного абзаца. Если это не моя задача, я так и скажу и подскажу, к кому лучше обратиться.

Задача

Отметьте всё подходящее.

Платформа

«Не знаю» — вполне нормальный ответ.

Что вы хотите создать и что это должно делать для людей, которые будут этим пользоваться? Напишите так, как сказали бы вслух.

0 / 1200

Два шага. Меньше минуты.