Интеграция с CDN для картинок товаров
Как ускорить загрузку изображений и снизить нагрузку на сервер.
Зачем CDN
- Быстрая доставка изображений пользователям из ближайших точек присутствия.
- Снижение нагрузки на ваш основной сайт и бэкенд.
- Гибкое кэширование, трансформация изображений, защита от DDoS.
Выбор провайдера
- Cloudflare CDN, Cloudflare R2 (объектное хранилище), Amazon S3 + CloudFront.
- Отечественные CDN/объектные стореджи: VK Cloud, Selectel, и т.п.
Стратегии хранения
- Хранить оригиналы в объектном хранилище, публиковать через CDN-домен (например,
cdn.example.com). - В карточке товара указывать абсолютный
image_urlна CDN (HTTPS). - При загрузке новых картинок — загрузить в бакет и сохранить URL в БД.
Кэш и заголовки
- Отдавать картинки с длительным
Cache-Controlи версионировать URL (query/hash). - Включить
ETagи/илиLast-Modifiedдля корректной валидации кэша.
Трансформация изображений
- Использовать форматы
webp/avifпри поддержке браузерами. - Размеры: не хранить огромные оригиналы для карточек, предусмотреть ресайзы.
Фолбек картинок
- Если у товара нет картинки — плагин
RustCMSShopUIпоказываетDefaultCardSprite. - Для веба — подключите placeholder
no-image.pngс CDN.
Практический пример
Пример имени файла:
products/weapon_ak_47_v2.webp
CDN URL:
https://cdn.example.com/products/weapon_ak_47_v2.webp
Запишите URL в поле image_url товара и проверьте показ в GUI.