Налаштування CDN через BunnyCDN: Pull/Push зони, Edge Rules і відео

Статика й відео просідають на піках, а кеш віддає застаріле? Ми налаштовуємо BunnyCDN під ключ: збираємо Pull- і Push-зони, правила Edge Rules та розвантаження джерел так, щоб пік навантаження проходив без просідань. Беремо на себе весь цикл — від аудиту трафіку до передачі регламентів.
Часті запитання

Налаштування BunnyCDN: де ламається віддача статики та відео

Поки трафік невеликий, віддача статики та відео виглядає здоровою: файли йдуть прямо з точки, де живе застосунок, і ніхто не помічає підміни.

Але щойно аудиторія розподіляється за регіонами, картина змінюється — користувач з іншого регіону тягне важкі файли через довгий маршрут, напряму із сервера-джерела.

Перше, що видно у вимірюваннях, — час до першого кадру у відео та час до відмальовування у зображень зростають разом із відстанню. Плеєр іде в буферизацію, частина запитів обривається через перевищення часу очікування, а до підтримки надходять скарги на «гальмує» без конкретики.

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

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

Повільна віддача відео перестає бути окремою проблемою і стає тригером для всього сервісу — джерело зайняте роздачею файлів замість обслуговування логіки.

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

Налаштування BunnyCDN починається з діагностики цієї картини — розбираємо, як закрити кожну з точок відмови.

Що дає правильно зібраний CDN-шар: ефекти й метрики

Правильно зібраний CDN-шар вимірюється не фактом увімкнення, а трьома цифрами: часткою влучань у кеш, часом віддачі з найближчої точки та обсягом трафіку, який взагалі не доходить до джерела. Нижче — що дає кожен ефект і за рахунок чого він досягається під час налаштування BunnyCDN.

Частка влучань у кеш і час віддачі

На старті частка влучань зазвичай тримається на 60–70%: заважають різний вигляд ключа кешу за параметрів запиту, короткі TTL і динамічні шляхи, які кешувати не можна.

Нормалізація ключа, винесення статики на довгі TTL і акуратні правила на межі піднімають показник до 90–95% — край віддає контент із найближчої точки, сторінка приходить помітно швидше, а повторні запити до джерела не доходять зовсім.

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

Розвантаження джерела та вихідного трафіку

Кеш на межі зрізає основну частину вихідного трафіку джерела: сервер віддає лише промахи, оновлення контенту та динаміку. Джерело перестає бути вузьким місцем на піках — розпродаж, масова розсилка або публікація в ЗМІ більше не перетворюються на чергу запитів і відмови.

Заодно зникає цілий клас збоїв: упирання в ліміти з'єднань, тайм-аути під час сплеску, відмови під навантаженням. Роздача відео виноситься в окрему зону, і важкий потік не конкурує із сайтом за ресурс джерела — пік розподіляється за точками присутності, а не за одним сервером.

Як це збирається на практиці — зони, правила на межі та схема роздачі відео — розбираємо далі.

Налаштування BunnyCDN: Pull-зони, Push-зони та Edge Rules

Вибір режиму роздачі визначає, звідки периферія бере контент і що робить із ним по дорозі. У BunnyCDN це задається типом зони та набором правил — від них залежать і швидкість віддачі, і поведінка під час оновлення файлів.

Варіант Коли підходить Обмеження
Pull-зона Контент на вашому origin, викладка деплоєм: статика, збірки, зображення Кеш прогрівається на першому запиті в регіоні, при промахах origin тримає пік
Push-зона Потрібна роздача без власного веб-сервера: файли лежать у сховищі Публікація через API або панель, автоматичного зв'язку з репозиторієм немає
Pull-зона + Edge Rules Заголовки, шляхи та політика кешу змінюються без правок у застосунку Логіка живе на периферії — складні умови важче налагоджувати
Гібрид: Pull + сховище для відео Відео відокремлено від веб-контенту, свій цикл публікації та роздача за діапазонами Два контури налаштувань, синхронізація імен та інвалідації

Кешування за розширеннями та кодами відповіді

Правила задають масками з пріоритетами: для стилів, шрифтів і збірок — довгий термін із міткою immutable, для відеоплейлистів і сегментів — секунди, для HTML — малий термін або вимкнений кеш.

Окремо перелічують коди відповіді: 200 і 301 тримають, 404 — недовго, щоб не вантажити origin, 5xx і 403 не кешують. Інвалідація кешу точкова — за URL або тегом; повне очищення зони обнуляє прогрів і повертає навантаження на origin.

Edge Rules: заголовки, переписування шляхів, обмеження

Edge Rules правлять запит і відповідь: підставляють Cache-Control, CORS і HSTS, приховують службові заголовки, переписують шлях для версіонованих збірок, роблять редіректи зі збереженням параметрів. Спрацьовує перший збіг, тому часткові умови ставлять вище за загальні.

Обмеження — скінченна кількість правил на зону та відсутність довільного коду: складну логіку виносимо на origin.

Порядок впровадження: від аудиту трафіку до передачі

Маршрут впровадження BunnyCDN будуємо так, щоб роздача переключилася без простою та без сюрпризів для сервера-джерела. Спочатку фіксуємо, як трафік розподілено зараз, потім проєктуємо зони і лише після перевірки переводимо аудиторію.

Аудит поточної схеми роздачі

  1. Інвентаризація роздачі трафіку. Знімаємо карту запитів: частка статики, зображень і відео, географія, пікові години, які шляхи найчастіше доходять до сервера-джерела. На виході — таблиця обсягів і вимог до кешу.
  2. Проєктування зон. Під статику та відео — Pull-зони, під великі файли з рідкими оновленнями — Push-зони з попереднім завантаженням. Тут же визначаємо ключі кешу, терміни зберігання та розділення за типами контенту.
  3. Налаштування правил на межі. Заголовки кешування, обробка параметрів в адресі, стиснення, доступ до сервера-джерела за підписом і порядок примусового оновлення кешу.

Перевірка на реалістичному профілі навантаження

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

Що замовник отримує на руки: конфігурації та регламенти

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

Схема потоків і конфігурація зон

  • Декларативні конфігурації зон: сервери-джерела, тип зони (pull або push), правила кешування за типами контенту, тайм-аути та повторні спроби.
  • Правила на периметрі: редіректи, заголовки безпеки, обмеження за методом і гео, ліміти на розмір запиту та частоту звернень.
  • Схема потоків трафіку: шлях запиту від клієнта до джерела, точки спрацювання кешу, сегмент відео-роздачі та порядок віддачі діапазонів файлу.
  • Політики підписаних посилань і токенів доступу: термін життя підпису, прив'язка до адреси клієнта або джерела переходу, ротація ключів без простою.

Регламент оновлення кешу та ролей доступу

  • Регламент інвалідації: що чиститься точково, що за префіксом, що живе до закінчення терміну, і очікуваний час до готовності.
  • Матриця ролей і прав: хто змінює конфігурацію, хто лише інвалідує, хто бачить аналітику та вивантаження.
  • Інструкції для чергової зміни: чек-лист діагностики за шарами, типові збої та порядок відкатів.
  • Порядок аварійного переключення джерела та план деградації відео-роздачі.

Кейс: прибрали просідання віддачі на пікових навантаженнях

Клієнт — медіасервіс із каталогом і бібліотекою відео: записи лекцій, розбори, записи трансляцій.

Доставка йшла напряму з серверів застосунку, і на вечірніх піках, коли одночасно підключалися тисячі глядачів, частина запитів закінчувалася відмовою, а каталог відкривався помітно довше звичайного. Розбирали та переводили доставку на BunnyCDN.

Що було до

Один і той самий контур віддавав відеофрагменти, зображення каталогу та дані інтерфейсу. Заголовки кешування на сегментах відео не задавалися взагалі, а прев'ю перезапитувалися в застосунку при кожному оновленні стрічки.

Частка влучань у кеш трималася близько 55%, на піку опускалася до 40% — майже весь трафік ішов на сервери застосунку, і час відповіді на 95-му процентилі зростав у рази. У найгарячіші години відмови під час віддачі сягали 2% запитів.

Що стало після

Рознесли доставку за призначенням: відео — у тягнучу зону з тривалим терміном зберігання сегментів у кеші, статика — в окрему зону з версіонуванням за іменем файлу, щоб оновлення каталогу не скидало весь кеш.

Умовну логіку винесли в правила на периметрі: свій термін життя для зображень, окремий — для маніфестів, примусове кешування для запитів без заголовків. Окремо закрили захист від сплесків: обмеження частоти звернень до джерела та пріоритет відеофрагментів над службовими запитами.

Переключали поступово — спочатку мала частка трафіку, потім повністю, з готовим відкатом в один крок.

Зняли метрики після стабілізації: частка влучань у кеш зросла до 94%, навантаження на сервери застосунку на піку впало на порядок, час відповіді на 95-му процентилі скоротився втричі, відмови під час віддачі — з 2% до 0,05%.

Просідання на вечірніх піках перестали відтворюватися навіть при двократному зростанні одночасних глядачів.

Що робити, якщо CDN уже розгорнуто, але кеш не працює

Кеш «не працює» частіше не через налаштування сховища, а тому що джерело забороняє зберігання.

Дивимося заголовки відповіді: Cache-Control зі значеннями no-store, private або max-age=0, Set-Cookie на статиці, Vary за користувацькими даними — будь-який із них змушує периферію ходити на джерело за кожним файлом.

Перевірка конфігурації починається з двох запитів до однієї адреси — що віддає джерело і що віддає вузол після прогріву; розбіжність у заголовках показує, де губиться зберігання.

Друга причина — різні адреси для одного й того самого файлу. Параметри версії, мітки кампаній, слеш на кінці, варіанти з www і без — для кешу це різні об'єкти, тому частка влучань падає, а джерело отримує трафік, який до нього доходити не повинен.

Лікується канонікалізацією: одна адреса для ресурсу та правила, що ігнорують зайві параметри під час обчислення ключа.

Третя — обхід периферії на стороні застосунку. Шаблони збирають посилання прямо на джерело, застосунок ходить повз вузол, старі сторінки зберігають абсолютні адреси.

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

Четверта — відсутність правил для динаміки. Якщо HTML і відповіді API обробляються тими самими налаштуваннями, що зображення та скрипти, вони не кешуються: без окремого правила з коротким терміном і врахуванням cookies кожна сторінка йде на джерело.

І перевіряємо інвалідацію — після релізу старі об'єкти мають скидатися адресно, інакше правки не доходять до користувачів.

Технічні сумніви, які знімаємо до старту

Перед стартом інженери та керівники напряму ставлять майже ті самі питання — про стійкість роздачі, доступ до закритих файлів і швидкість оновлень. Нижче короткі відповіді без маркетингу: так, як це працює з Pull- і Push-зонами на практиці.

Що буде з роздачею, якщо вузол або цілий регіон вийде з ладу?

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

Як обмежити доступ до закритих файлів?

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

Як швидко оновлюється контент після релізу?

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

Чи доведеться перебудовувати інфраструктуру та DNS?

Ні. Шар стає перед джерелом: домен переводиться на CNAME, сертифікати випускаються та продовжуються автоматично. Відкат — переключенням запису назад, це хвилини, а не вікно простою.

Що змінюється порівняно з роздачею напряму з сервера?

Статика йде на периферію, навантаження на джерело падає — сервер займається динамікою та API. Браузер отримує файли з найближчого вузла, а правила на периферії знімають зайві запити до того, як вони дійдуть до бекенду.

Опишіть вашу схему роздачі та обмеження за доступами — повернемося з оцінкою та планом робіт.

Обговоримо задачу: які дані потрібні для оцінки

Щоб повернутися з оцінкою, а не з вилкою «від і до», нам потрібні вихідні дані щодо вашої роздачі. Чим точніший профіль трафіку та поточна схема, тим менше припущень в оцінці робіт і в плані впровадження — а отже, менше сюрпризів на етапі переключення.

  • Профіль трафіку: середнє та пікове навантаження, добові й тижневі коливання, частка запитів, які взагалі підлягають кешуванню.
  • Географія користувачів: регіони з основним обсягом, вимоги до близькості вузлів роздачі та до затримки віддачі.
  • Типи контенту: статика, великі файли, відео — із зазначенням тривалості та того, чи потрібне перемотування всередині потоку.
  • Поточна схема роздачі: джерела контенту, домени, як виставлені заголовки кешування та як зараз скидається застаріле.
  • Обмеження: терміни, допустимі вікна недоступності, вимоги до доступності та поведінки майданчика при відмові окремого вузла.
  • Доступи: панель керування, керуючий програмний інтерфейс і DNS-зони, якщо трафік переключаємо на нашій стороні.

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

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139