У нас много фотографий товаров в хорошем качестве. Возможно, из-за этого страницы долго загружаются, особенно с мобильных. Как проверить, действительно ли проблема в изображениях и как их правильно оптимизировать?
Как понять, что сайт теряет клиентов из-за долгой загрузки изображений?
Да, это можно довольно точно проверить: по метрикам Web Vitals (в первую очередь LCP) и по реальному поведению пользователей (конверсии/отказы) в разрезе скорости и типа устройства. Если LCP на мобильных «делает» именно картинка товара или баннер, а при замедленном канале доля отказов и падение добавлений в корзину растут — проблема почти наверняка в изображениях и их доставке.
Как понять, что клиенты уходят именно из‑за изображений
Смотрю на это в двух слоях: технический (что грузится и сколько весит) и продуктовый (как это влияет на деньги).
1) Техническая диагностика: что именно тормозит
- LCP (Largest Contentful Paint) — ключевая метрика для карточек и каталогов. В отчёте/инструменте по Web Vitals важно увидеть элемент LCP. Если это img (главное фото товара, баннер, галерея) — изображение основной кандидат.
- Waterfall (сетевой водопад) в браузерных DevTools: смотрим, какие ресурсы самые «тяжёлые» и какие приходят поздно. Типичный паттерн проблемы: крупное изображение скачивается долго, стартует поздно из-за очереди/приоритета, или не кешируется.
- Проверка на мобильном профиле сети: эмуляция 4G/3G и слабого CPU. Если время до видимого контента растёт непропорционально — почти всегда виноваты медиа (изображения) плюс отсутствие адаптивных размеров.
- Доля изображений в общем весе: если на страницу уходит условно 5–15 МБ и 70–90% — картинки, дальше копать почти не надо.
2) Продуктовая диагностика: как это бьёт по конверсии
- Разрез по устройствам и скорости: в аналитике сравните мобильные vs десктоп, и сегментируйте пользователей по скорости (например, по LCP/времени загрузки страницы). Если при ухудшении скорости падают просмотры карточек → добавления в корзину → покупки, связь есть.
- Событие “page_view” + метрики скорости: важно иметь RUM (реальные замеры у пользователей), а не только лабораторные тесты. Тогда видно: «у 30% мобильных LCP > 4 c, и у них конверсия в корзину в 1,5–2 раза ниже» (без выдумывания цифр — вы увидите свои).
Как проверить, что проблема именно в изображениях (пошагово)
- Снимите 3–5 типовых страниц: главная, каталог, карточка товара, корзина/чекаут, страница поиска. Проблема часто максимальна в карточке и каталоге.
- Запустите аудит Web Vitals (лабораторный) и посмотрите, какой элемент является LCP. Если это изображение — фиксируем.
- Откройте DevTools → Network и отсортируйте по размеру/времени. Отдельно проверьте, не грузятся ли изображения:
- в исходном «фотоаппаратном» размере (например, 4000×3000 для блока 600×600)
- без сжатия или в PNG там, где нужен JPEG/WebP
- без кеширования (каждый заход — повторная загрузка)
- пакетом десятками сразу (без lazy-load внизу страницы)
- Сравните “медленно” vs “быстро”: сделайте один прогон с отключённым кешем и один с кешем. Если повторный заход почти не ускоряется — у вас проблемы с Cache-Control/ETag или CDN.
- Подключите RUM по Web Vitals в вашу аналитику (GA4/внутреннюю): собирайте LCP/INP/CLS и связывайте с ключевыми событиями (view_item, add_to_cart, begin_checkout, purchase).
Как правильно оптимизировать изображения (что даёт реальный эффект)
- Отдавайте правильный формат: AVIF/WebP для поддерживаемых браузеров, JPEG для остальных. PNG — только когда нужна прозрачность/графика, иначе он раздувает вес.
- Отдавайте правильный размер:
- сделайте несколько пресетов (например, 200/400/800/1200 px по ширине)
- используйте responsive images (srcset/sizes), чтобы мобильные не скачивали десктопные фото
- Сжимайте с контролем качества: цель — минимальный вес без заметной деградации на реальном размере отображения. Для товарки обычно качество 70–85 (в терминах JPEG/WebP) — хороший диапазон, но подбирается визуально.
- Lazy-load для всего, что ниже первого экрана: в каталогах это must. Но герой/первое фото товара лучше не ленить — его нужно загрузить раньше.
- Приоритизация критического изображения: для LCP-картинки задайте высокий приоритет загрузки (в зависимости от стека) и убедитесь, что она не блокируется скриптами/стилями.
- CDN и кеширование: включите длительный кеш для версионированных URL (с хешем/параметром версии) и отдавайте через CDN ближе к пользователю. Это сильно помогает мобильным сетям.
- Оптимизация на сервере/в пайплайне: лучше генерировать нужные размеры на стороне сервера (или через image proxy/CDN-трансформации), а не грузить оригиналы и масштабировать на клиенте.
- Уберите “скрытые” утечки веса:
- галереи, которые подгружают сразу все фото в полном размере
- ретина-версии без нужды (2x/3x) для маленьких элементов
- дубли изображений (одна и та же картинка в разных местах разными URL)
Практический план для команды на 1–2 недели
- Зафиксировать базовые метрики: LCP/INP/CLS по ключевым страницам и отдельно по мобильным.
- Быстрые победы: включить WebP/AVIF, настроить кеширование, ограничить максимальные размеры, включить lazy-load в каталогах.
- Сделать адаптивную выдачу: srcset/sizes + набор пресетов на бэке (или через image CDN).
- Проверка влияния: после выката сравнить долю пользователей с плохим LCP и конверсию по тем же страницам/устройствам.
Типичные ошибки при оптимизации изображений
- Сжали “как получилось”, но оставили огромные размеры: вес падает, но LCP всё равно плохой из-за мегапикселей.
- Включили lazy-load для первого экрана и ухудшили LCP (пользователь видит пустое место дольше).
- Нет кеширования или нет версионирования URL — браузер не может хранить и переиспользовать.
- Оптимизируют в вакууме: смотрят только Lighthouse, но не связывают скорость с воронкой и реальными устройствами.
Если скажете, на чём у вас сайт (CMS/фреймворк), как храните фото (локально, S3-совместимое хранилище, CDN) и где основная боль (каталог или карточка), я предложу конкретную схему: пресеты, форматы, кеш-политики и порядок внедрения без риска сломать качество витрины.
Проверенные материалы и решения, связанные с вопросом.