IHOR.DEVБАЗА_ЗНАНЬ
МЕНЮ

~/blog / Архітектура / headless-cms-vs-traditional-cms.md

// основний посібник · 3 хв читання

Headless CMS чи традиційна CMS

Порівняйте headless і традиційну CMS за власністю, редакційним переглядом, каналами контенту, інвалідацією кешу та розгортанням.

Коротка відповідь

Традиційна CMS зазвичай керує контентом і представленням сторінок. Headless відокремлює контент від frontend. Вибирайте headless для кількох каналів чи особливого представлення; інтегровану CMS — для одного сайту з відповідними шаблонами. Межа API додає обов’язки, а не усуває редакційну роботу.

Категорії перетинаються: інтегрована CMS може мати API, headless — візуальний редактор. Оцінюйте робочий процес, не ярлик. Тут ідеться про власність контенту й представлення, не про статичну генерацію чи SSR: обидві моделі підтримують різні архітектури.

Практичні кроки реалізації

1. Простежте публікацію статті

Нехай редактор створить матеріал із заголовком, зображенням, внутрішнім посиланням і перекладом. Простежте перегляд, погодження, випуск, виправлення й зняття. Врахуйте передачу між системами та розробника. Гарна форма може приховувати неправильне розгортання перегляду чи неповний мовний fallback.

2. Відокремте зміст від оформлення

Моделюйте назву послуги, ціну, місце й контакти окремо від макета. Headless корисний для спільних фактів у кількох каналах. Довільні візуальні блоки одного сайту залишають зв’язок із frontend навіть через API. Позначте доменні поля й поля представлення.

3. Захистіть перегляд як окремий режим читання

Публічний режим читає опубліковане, перегляд редактора — чернетки через авторизований сервер. Ключі чернеток не потрапляють у браузер чи спільний кеш. Next.js Draft Mode змінює режим маршруту, але сам не авторизує редактора й не вибирає CMS endpoint. Перевірте вхід, дозволений шлях і вихід.

4. Заплануйте виправлення й видалення

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

Приклад реалізації

Невеликий runtime-парсер відокремлює frontend від випадкових полів CMS. Ілюстративний контракт приймає лише опубліковане й повертає публічні поля. Реальний адаптер перевіряє rich text, URL медіа й локалі. Один адаптер полегшує міграцію порівняно з типами постачальника в усіх компонентах.

type PublicEntry = { slug: string; title: string };

export function parsePublishedEntry(value: unknown): PublicEntry {
  if (typeof value !== "object" || value === null) {
    throw new Error("Invalid CMS response");
  }
  const entry = value as Record<string, unknown>;
  if (entry.state !== "published" ||
      typeof entry.slug !== "string" ||
      !/^[a-z0-9-]+$/.test(entry.slug) ||
      typeof entry.title !== "string" ||
      !entry.title.trim()) {
    throw new Error("Entry is not valid public content");
  }
  return { slug: entry.slug, title: entry.title };
}

Компроміси та альтернативи

Інтегроване видання зменшує координацію, але може обмежувати представлення й повторне використання. Headless додає API, розгортання, кеш і перегляд. Файли репозиторію — третій варіант для розробників. Портфоліо використовує англійський Markdown, українські накладки й хеші; це факт, не універсальна рекомендація.

Поширені помилки

API не гарантує переносності: rich text і блоки можуть потребувати конвертації. Frontend не успадковує redirects і SEO CMS автоматично. Ключі перегляду не мають витікати через referrer чи logs. Доступ до чернеток без перевірки призначення може відкрити redirect чи недозволений шлях.

Перевірка перед випуском

  • Редактори виконують повну публікацію й виправлення.
  • Публічні та draft-ключі, читання й кеші розділено.
  • Події перевіряються й допускають повтори.
  • Зняття прибирає списки, стрічки й старі сторінки.
  • Структурні поля мають формат експорту й міграції.
  • Відмови CMS і frontend мають відповідальних.

Поширені запитання

Чи headless завжди швидший?

Ні. Впливають рендеринг, кеш, медіа, залежності й API. Headless може добре кешувати контент або сповільнювати його послідовністю запитів. Порівнюйте production за однакових даних і медіа.

Чи headless спрощує редизайн?

Може, якщо контент описує значення, а frontend — макет. Якщо CMS зберігає старий дизайн вкладеними блоками, міграція потрібна й надалі. Перевірте повторне використання реального матеріалу.

Наступний крок

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

Первинні джерела

Пов’язані матеріали та приклади

Ігор Харчишин

Незалежний full-stack інженер продуктів, який пише посібники з реалізації розширень браузера та сучасних вебпродуктів на основі першоджерел.

Потрібно реалізувати це у вашому продукті?

Перегляньте відповідні приклади продуктів або поділіться контекстом розробки вебзастосунку, розширення Chrome, API чи SaaS.