Реалізація Image CDN (Imgix/Cloudinary) для оптимізації зображень

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Реалізація Image CDN (Imgix/Cloudinary) для оптимізації зображень
Середня
від 1 робочого дня до 3 робочих днів
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування Image CDN: imgix та Cloudinary

Image CDN автоматично оптимізує зображення: конвертує в WebP/AVIF, змінює розмір під пристрій, стискає без втрати якості — все через URL-параметри без модифікації оригіналу.

imgix: налаштування та використання

# imgix працює поверх вашого S3/сховища
# Налаштуйте Source у dashboard.imgix.com:
# Type: Amazon S3
# S3 Bucket: my-bucket
# S3 Key ID / Secret Key
# Base URL: https://mysite.imgix.net
// TypeScript: imgix URL builder
import ImgixClient from '@imgix/js-core';

const client = new ImgixClient({
  domain: 'mysite.imgix.net',
  secureURLToken: process.env.IMGIX_TOKEN, // для підпису URL
});

// Базова трансформація
const url = client.buildURL('/products/shoe.jpg', {
  w: 800,           // ширина
  h: 600,           // висота
  fit: 'crop',      // crop | fill | scale | clip | max | min
  crop: 'faces,entropy', // розумна обрізка
  auto: 'format,compress', // auto WebP/AVIF + стиснення
  q: 80,            // якість
  dpr: 2,           // device pixel ratio
});
// → https://mysite.imgix.net/products/shoe.jpg?w=800&h=600&fit=crop&auto=format%2Ccompress&q=80&dpr=2&s={signature}

Інтеграція Next.js:

// next.config.ts
const nextConfig = {
  images: {
    loader: 'custom',
    loaderFile: './lib/imgix-loader.ts',
    domains: ['mysite.imgix.net'],
  },
};

// lib/imgix-loader.ts
import ImgixClient from '@imgix/js-core';

const client = new ImgixClient({ domain: 'mysite.imgix.net' });

export default function imgixLoader({
  src,
  width,
  quality,
}: {
  src: string;
  width: number;
  quality?: number;
}) {
  return client.buildURL(src, {
    w: width,
    auto: 'format,compress',
    q: quality ?? 75,
    fit: 'max',
  });
}

// Використання — стандартний next/image з автоматичним imgix
<Image
  src="/products/shoe.jpg"
  width={800}
  height={600}
  alt="Running shoe"
  sizes="(max-width: 768px) 100vw, 50vw"
/>

Cloudinary: налаштування

npm install next-cloudinary
// next.config.ts
const nextConfig = {
  images: {
    remotePatterns: [
      {
        protocol: 'https',
        hostname: 'res.cloudinary.com',
        pathname: `/${process.env.CLOUDINARY_CLOUD_NAME}/**`,
      },
    ],
  },
};
// Компоненти next-cloudinary
import { CldImage, CldUploadWidget } from 'next-cloudinary';

// Оптимізоване зображення
<CldImage
  src="products/shoe"           // public_id у Cloudinary
  width={800}
  height={600}
  alt="Running shoe"
  crop="fill"
  gravity="auto"                // розумне кадрування
  format="auto"                 // auto WebP/AVIF
  quality="auto"
  sizes="(max-width: 768px) 100vw, 50vw"
/>

// Трансформації
<CldImage
  src="hero/banner"
  width={1200}
  height={400}
  alt="Hero"
  overlays={[{
    text: {
      color: 'white',
      fontFamily: 'Arial',
      fontSize: 40,
      fontWeight: 'bold',
      text: 'Sale 50% Off',
    },
    position: { gravity: 'south', y: 40 },
  }]}
/>

// Upload Widget
<CldUploadWidget
  uploadPreset="unsigned_preset"
  onUpload={({ info }) => {
    console.log('Uploaded:', info.public_id);
    setImageId(info.public_id);
  }}
>
  {({ open }) => <button onClick={() => open()}>Завантажити фото</button>}
</CldUploadWidget>

Порівняння imgix vs Cloudinary

Параметр imgix Cloudinary
Джерело Ваше сховище (S3) Власне сховище
Завантаження файлів Тільки через S3 SDK, widget, API
Трансформації URL-параметри URL-параметри + SDK
ML-функції Smart crop Face detection, background removal, AI
Ціна По трафіку По storage + трансформаціям
Найкраще для Контроль над сховищем Медіа-менеджмент + трансформації

Cloudflare Images: бюджетна альтернатива

# Upload
curl -X POST "https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v1" \
  -H "Authorization: Bearer {token}" \
  -F [email protected] \
  -F metadata='{"productId":"123"}'

# Delivery URL
https://imagedelivery.net/{account_hash}/{image_id}/public
https://imagedelivery.net/{account_hash}/{image_id}/thumbnail  # варіант
https://imagedelivery.net/{account_hash}/{image_id}/w=800,h=600,fit=scale-down

Стоимість: $5/місяць за 100 000 зображень (значно дешевше за Cloudinary).

Responsive Images: srcset

<!-- Автоматично згенерований srcset через imgix -->
<img
  src="https://mysite.imgix.net/hero.jpg?w=800&auto=format"
  srcset="
    https://mysite.imgix.net/hero.jpg?w=400&auto=format 400w,
    https://mysite.imgix.net/hero.jpg?w=800&auto=format 800w,
    https://mysite.imgix.net/hero.jpg?w=1200&auto=format 1200w,
    https://mysite.imgix.net/hero.jpg?w=1600&auto=format 1600w
  "
  sizes="(max-width: 768px) 100vw, 1200px"
  alt="Hero image"
  loading="lazy"
/>

Налаштування imgix або Cloudinary з інтеграцією Next.js — 1–2 робочих дні. Включаючи конфігурацію loader, responsive images та upload widget.