Перейти до основного вмісту
HTML та серверний код залишаються в Next.js. На CDN завантажується лише вміст .next/static, доступний як _next/static. Файли public потребують окремих URL-адрес. Поведінка assetPrefix описана в документації Next.js.

1. Виберіть адресу доставки

Спільний CDN: https://cdn.erlcrussia.com/YOUR_TEAM_SLUG/releases/RELEASE_ID. Кастомний домен: https://files.example.com/releases/RELEASE_ID після реєстрації, DNS/TLS-перевірки. В API поле domain - це slug команди або підтверджене ім’я домену, без схеми та без префікса релізу.

2. Налаштуйте production-складання

next.config.js
Завантажуйте та запускайте ту саму production-збірку. Після завантаження файлів запустіть Next.js командою npm run start у своєму середовищі розміщення. Для власного домену вкажіть його адресу в CDN_ASSET_PREFIX перед збиранням.

3. Прив’яжіть ключ користувача

Задайте API_BASE=https://api.erlcrussia.com. Користувацькі CDN-маршрути потребують erlcrussia-api-key; майстер-ключ для них не використовується. Не розміщуйте ключ у NEXT_PUBLIC_*, HTML або JavaScript застосунку.

4. Завантажте файли до запуску релізу

Для кожного файлу .next/static/RELATIVE_PATH надішліть запит за допомогою releases/RELEASE_ID/_next/static/RELATIVE_PATH:
Для CSS використовуйте text/css, для шрифтів – MIME відповідного формату. Не ставте загальний Content-Type: multipart/form-data вручну: boundary додає клієнт. compress=false зберігає байти та SHA-256 збірки. Для власного домену замініть domain на files.example.com. HTTP 200 повертає { "success": true, "asset": { ... } }. Зайнятий явний шлях дає 409; не вважайте це успішним перезаписом. Порівняйте SHA-256 існуючого ассета або використовуйте новий RELEASE_ID. При 429 чекайте на Retry-After/Retry-After і повторюйте лише відхилений запит. Завантажуйте послідовно з урахуванням загального ліміту, а чи не сотнями паралельних запитів. Не завантажуйте всю .next: там є серверний код і конфігурація. Вихідні картки .map публікуйте лише за усвідомленої необхідності. Старі релізи зберігайте доти, доки їх використовують відкриті вкладки.

5. Картинки та інші public-файли

Звичайний img запитує CDN безпосередньо. У разі використання оптимізації next/image браузер може звертатися до локального /_next/image; це окремий механізм. assetPrefix не переносить HTML, API, Server Actions та динамічні дані Next.js на CDN.

6. Перевірте результат

У Network перевірте домен JS/CSS/шрифтів, MIME, CORS та HTTP 200. Порівняйте байти з вихідними файлами, потім HEAD, Range (206) та умовний запит по ETag (304). Натисніть інтерактивну кнопку: наявність HTML ще не доводить виконання JavaScript. CDN доставляє заздалегідь завантажені файли. originUrl задає адресу перенаправлення для кореня домену або відсутнього об’єкта, а не джерело автоматичного завантаження. Завантажте файли збірки через API до публікації релізу. Шляхи, що починаються з _next/static/, отримують immutable у CDN. Якщо перед _next стоїть префікс релізу, поточна реалізація застосовує стандартний Cache-Control; перевіряйте фактичний заголовок. Скидання кешу CDN не очищає браузерний кеш і не підтверджує очищення Cloudflare.