Фотографии товаров высокого качества, но страницы грузятся медленно. Как оптимизировать изображения без потери качества?
Сайт перегружен тяжёлыми изображениями, если основная доля «веса» страницы приходится на картинки и из‑за них ухудшается реальная скорость отрисовки (в первую очередь LCP) на мобильных. Оптимизация без заметной потери качества достигается не «жёстким сжатием», а правильными размерами, современными форматами и адаптивной отдачей под устройство.
Как понять, что тормозит именно из-за изображений
- Вес страницы: в DevTools → Network (или Lighthouse) видно, что изображения занимают большую часть загрузки (часто 60–90% общего объёма).
- LCP (Largest Contentful Paint) — обычно это главный баннер/первое фото товара. Если LCP высокий, а LCP-элемент — изображение, значит упираетесь в картинки и их доставку.
- Непопадание в размер: скачивается файл 2000–3000 px по ширине, а на странице он отображается, например, 600–800 px. Это прямой индикатор лишних мегабайт.
- Много изображений «ниже первого экрана» грузится сразу — видно пачку запросов ещё до скролла.
- Медленно на 4G/средних устройствах: на десктопе может быть «норм», но мобильные пользователи страдают больше всего.
Технологическая логика: где теряется скорость
- Размер (resolution) важнее «качества» (quality): лишние пиксели дают экспоненциальный рост веса. Правило: отдаём картинку близкую к фактическому размеру вёрстки + запас под Retina.
- Формат: JPEG/PNG часто тяжелее, чем WebP/AVIF при той же визуальной картинке, особенно для фото товаров.
- Отсутствие адаптивности: без srcset/sizes вы неизбежно отдаёте один «универсальный» большой файл всем.
- Очередность загрузки: если всё грузится сразу, вы сами отнимаете канал у критичного LCP-изображения.
- Доставка: нет кеширования/CDN — каждое изображение едет «долго» и далеко.
Практически: как оптимизировать без заметной потери качества
- Снимите базовые замеры
- Определите LCP-элемент на страницах каталога/карточки товара.
- Посмотрите топ-10 самых тяжёлых изображений и где они используются (главная, категории, PDP).
- Ограничьте реальные размеры
- Сгенерируйте несколько размеров на сервере/в хранилище (например: 320, 480, 768, 1024, 1280, 1600 px по ширине).
- В карточке товара обычно достаточно 1200–1600 px для zoom/галереи (зависит от дизайна), а для превью в каталоге — 400–800 px.
- Всегда задавайте width и height в HTML (или через CSS), чтобы не было скачков макета и лишних перерасчётов.
- Включите адаптивную отдачу (srcset/sizes)
- Браузер сам выберет подходящий файл под ширину контейнера и плотность пикселей.
- Это ключ к «без потери качества»: на Retina вы отдаёте более детальный вариант, но не всем подряд.
- Перейдите на современные форматы
- WebP — хороший базовый стандарт для фото.
- AVIF — часто ещё компактнее, но убедитесь, что ваша цепочка обработки/кеширования готова и есть fallback.
- PNG оставляйте только там, где реально нужна прозрачность/графика без потерь (иконки лучше перевести в SVG).
- Настройте «умное» сжатие
- Для фото обычно хорошо работает качественная компрессия в диапазоне quality примерно 60–80 (для WebP/AVIF часто визуально почти неотличимо от 90–100, но вес падает заметно).
- Удалите лишние метаданные (EXIF/ICC), если они не нужны бизнесу.
- Lazy loading и приоритизация
- Все изображения ниже первого экрана грузите лениво (lazy). Это быстро даёт эффект на каталогах.
- Главное LCP-изображение, наоборот, не прячьте за lazy: ему задайте приоритет загрузки (например, через атрибуты приоритета в зависимости от стека).
- Кеширование и CDN
- Дайте долгий кеш для неизменяемых файлов (с версионированием в имени), чтобы повторные заходы были почти мгновенными.
- Раздавайте изображения через CDN ближе к пользователю — это ускоряет не только «первый байт», но и стабильность загрузки в регионах.
- Автоматизируйте пайплайн
- Сделайте правило: любое загруженное фото товара автоматически генерирует набор размеров + WebP/AVIF + fallback.
- Маркетинг и контент-команда не должны вручную «переделывать» изображения — иначе процесс развалится через месяц.
Типичные ошибки, из-за которых «оптимизация» не работает
- Сжимают, но не уменьшают размер: оставляют 3000 px и просто крутят quality — выгода ограничена.
- Отдают один файл всем: нет srcset/sizes, поэтому мобильным уходит десктопный вариант.
- Lazy для первого экрана: LCP становится хуже, хотя «по идее всё оптимизировали».
- Нет кеширования: при каждом открытии/листании каталога изображения качаются заново.
- PNG везде: фото товаров в PNG почти всегда неоправданно тяжелее.
Если хотите, я могу подсказать целевые параметры (размеры, форматы, качество) под ваш типичный шаблон карточки/каталога: для этого достаточно скриншота страницы и пары примеров исходных изображений/их текущих размеров.
Ответы пользователей