Оптимизация изображений в вебе: форматы, адаптивность и ленивая загрузка
Коротко: Изображения обычно самая большая часть веб-страницы; современные форматы (WebP, AVIF), подходящие размеры (srcset), ленивая загрузка и фиксированные размеры ускоряют загрузку и предотвращают сдвиги макета.
Подробнее: Фотография в 4 МБ в карточке шириной 300 пикселей — расточительство. Оптимизация изображений улучшает LCP (самый большой видимый элемент), экономит объём данных и полезна для SEO и окружающей среды.
Подробности
Правильный формат
- JPEG: фотографии, поддерживается везде.
- PNG: графика с прозрачностью, резкими краями (для фотографий велик).
- WebP: примерно на 25–35 % меньше, прозрачность, анимация.
- AVIF: часто ещё меньше (HDR), создаётся медленнее.
- SVG: логотипы, значки, диаграммы (вектор, масштабируемый, стилизуется через CSS; избегайте скриптов из неизвестных SVG).
- GIF: для анимаций лучше MP4/WebM или анимированный WebP.
Качества 70–85 обычно достаточно; удаляйте метаданные (EXIF/GPS) (конфиденциальность).
Адаптивные изображения
<img src="photo-800.jpg"
srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1600.jpg 1600w"
sizes="(max-width: 600px) 100vw, 50vw"
width="800" height="533" alt="Description" loading="lazy" decoding="async">
<picture>
<source type="image/avif" srcset="photo.avif">
<source type="image/webp" srcset="photo.webp">
<img src="photo.jpg" alt="Description" width="800" height="533">
</picture>srcset/sizes позволяют браузеру выбирать по ширине экрана и плотности пикселей; <picture> доставляет форматы и художественное кадрирование (иная обрезка на телефонах).
Ленивая загрузка и макет
loading="lazy"загружает изображения только когда прокрутка приближается; самое важное изображение вверху (LCP) не ленивое, а сfetchpriority="high"/preload.- Указывайте
widthиheight(илиaspect-ratio), чтобы не было сдвига макета (CLS). - Тексты
altдля доступности; декоративные изображенияalt="". - Заполнители (blur hash/доминирующий цвет) для ощущения скорости.
- Фоновые изображения в CSS:
image-set(); iframe/видео тоже лениво.
Инструменты и доставка
- Next.js
next/image, Astro, Nuxt Image: автоматически создают размеры/форматы, с кэшем. - Sharp, Squoosh,
cwebp,avifenc, ImageMagick в сборке/скрипте. - CDN для изображений (Cloudinary, imgix, Vercel Image Optimization): размер/формат через URL.
- Кэширование: длинный
Cache-Controlс хэшем в имени файла; используйте CDN. - Проверка: Lighthouse, WebPageTest, сеть в DevTools (размер и отображаемый размер).
- Права: соблюдайте права на изображения/лицензию, фотографии людей только с разрешения. Изображения вики/страниц: сжимайте до загрузки.
См. также: WebP, Lighthouse и Core Web Vitals, CDN