Blog technologiczny od 2014 · 1 111 wpisów
RSS

Headless CMS – co to jest, przykłady i kiedy warto go użyć?

Świat technologii webowych zmienia się bardzo dynamicznie i co chwilę pojawiają się nowe pomysły na budowanie stron. Jednym z nich jest headless CMS. Co to jest, jak działa i kiedy warto użyć tej technologii?

Headless CMS to system zarządzania treścią, który nie ma własnej warstwy prezentacji. Przechowuje treść i udostępnia ją przez API (REST albo GraphQL), a o tym, jak ta treść wygląda na stronie czy w aplikacji, decyduje osobny frontend, np. w Next.js, Astro albo Nuxt.

Headless CMS w skrócie
  • „Headless” (bezgłowy) – CMS bez „głowy”, czyli bez szablonów i motywów. Zostaje panel do edycji treści i API.
  • Przykłady: Strapi i Payload (open source, do własnego hostingu), Sanity, Contentful i Storyblok (usługi w chmurze), a także WordPress używany przez REST API lub WPGraphQL.
  • Zalety: dowolny frontend, jedna treść dla strony, aplikacji i innych kanałów, mniejsza powierzchnia ataku.
  • Wady: wyższy koszt wdrożenia i utrzymania, potrzeba programistów, SEO trzeba zaprojektować (SSR/SSG).
  • Dla kogo: większe serwisy, wiele kanałów, zespół frontendowy. Do prostej wizytówki zwykle się nie opłaca.

Na początku dodam, że headless CMS dla wielu może być kolejnym buzzwordem – czymś, czego się używa, bo inni używają. W tym tekście chcę odpowiedzieć na pytania, które pojawiają się przy wyborze tej czy innej technologii.

Headless CMS – co to jest?

Od strony redaktora różnica jest niewielka. Po zalogowaniu do panelu są pola do edycji treści, media, role użytkowników. Odwiedzający stronę też nie zobaczy nic szczególnego – strona wygląda i działa tak, jak w „tradycyjnym” rozwiązaniu. Różnica jest w tym, co dzieje się pod spodem.

Tradycyjny CMS

W tradycyjnym CMS-ie zarządzanie treścią i jej wyświetlanie to jedna aplikacja. Gdy użytkownik wchodzi na stronę, serwer uruchamia skrypt (np. PHP), łączy się z bazą danych, pobiera treść, wkłada ją do szablonu i zwraca gotowy HTML. Tak działa WordPress z motywem – w tym ten blog. Na zdjęciu tytułowym widać zresztą kawałek WordPressa, w którym kod HTML jest wymieszany z PHP.

Szablony, wtyczki i treść są tu mocno ze sobą powiązane. Zmiana technologii po stronie serwera albo przebudowa wyglądu oznacza zwykle pracę po obu stronach naraz.

Headless CMS

W headless CMS-ie ten podział jest sztywny: CMS przechowuje treść i wystawia API, a frontend to osobna aplikacja, która z tego API korzysta. Nazwa wzięła się właśnie stąd – „głową” jest warstwa prezentacji, a tej CMS nie ma.

Frontend może pobierać dane w różnych momentach:

  • przy budowaniu strony (SSG) – generator pobiera treść po API i tworzy gotowe pliki HTML, które leżą na serwerze lub CDN,
  • na serwerze przy każdym żądaniu (SSR) – serwer frontendu pobiera dane i zwraca gotowy HTML,
  • w przeglądarce (CSR) – przeglądarka dostaje „pusty” szkielet, a JavaScript dociąga treść po API.

To ostatnie rozwiązanie jest najprostsze, ale – jak za chwilę zobaczysz – najgorsze dla SEO.

Przykłady headless CMS

Rynek jest duży, ale kilka nazw przewija się najczęściej. Warto zwrócić uwagę przede wszystkim na model: czy to oprogramowanie open source, które hostujesz sam, czy usługa w chmurze (SaaS).

CMS Model Co warto wiedzieć
Strapi open source (MIT, edycja Community) + Strapi Cloud Node.js, API REST i GraphQL, własny panel admina. Funkcje Enterprise na osobnej licencji.
Payload open source (MIT) TypeScript, instaluje się bezpośrednio w katalogu /app projektu Next.js.
Sanity Studio open source (MIT), treść w chmurze Treść leży w hostowanym Content Lake, zapytania w języku GROQ albo GraphQL.
Contentful SaaS (zamknięty) Jedna z pierwszych platform tego typu (Berlin, 2013), popularna w dużych firmach.
Storyblok SaaS Edytor wizualny z podglądem strony na żywo – ukłon w stronę redaktorów.
WordPress open source (GPL) Od wersji 4.7 (2016) ma w rdzeniu REST API, a wtyczka WPGraphQL dodaje GraphQL.

WordPress jako headless CMS

WordPress nie musi być „głową”. Od wersji 4.7 wyposażone jest w REST API z endpointami dla wpisów, komentarzy, kategorii, użytkowników i ustawień, więc panel może służyć wyłącznie do redagowania treści, a stronę renderuje np. Next.js. Kto woli GraphQL, ma darmową wtyczkę WPGraphQL.

Info

W praktyce oznacza to, że te dwa serwery (usługi) mogą istnieć w różnych miejscach. W zależności od infrastrukry projektu może to być bardziej lub mniej złożone. Panel CMS-a może być schowany w wewnętrznej sieci a tylko fronaend wystawiony na świat.

To dobra droga, gdy redakcja zna już WordPressa, a zespół chce nowoczesnego frontendu. Trzeba jednak pamiętać, że część wtyczek (np. tych, które dokładają coś do motywu albo generują meta tagi SEO w <head>) w takim układzie nie zadziała sama – frontend musi te dane pobrać i wyrenderować.

Architektura: API + frontend

W typowym wdrożeniu headless CMS są trzy elementy:

  • CMS – panel dla redaktorów i API (REST lub GraphQL),
  • frontend – aplikacja w Next.js (React), Nuxt (Vue), Astro albo innym frameworku, która pobiera treść i składa z niej strony,
  • hosting/CDN – osobno dla CMS-a i osobno dla frontendu.

Do tego dochodzi mechanizm odświeżania. Gdy redaktor opublikuje zmianę, CMS wysyła webhook, a frontend przebudowuje stronę albo unieważnia jej cache. Next.js robi to np. przez ISR (Incremental Static Regeneration): strona jest statyczna, ale może zostać wygenerowana ponownie po określonym czasie albo na żądanie (revalidatePath, revalidateTag). Astro w dokumentacji ma gotowe poradniki integracji ze Strapi, Contentful, Sanity, Storyblok, WordPressem czy Payloadem.

Jeśli frontend ma działać na serwerze (SSR), potrzebujesz hostingu dla Node.js – o tym, na co zwrócić uwagę, pisałem w tekście jaki hosting dla Node.js.

Zalety headless CMS

  • Swoboda we frontendzie. Część wizualna może powstać w czystym JavaScripcie, Reakcie, Vue, Svelte czy Astro – CMS niczego nie narzuca.
  • Swoboda na backendzie. Frontend rozmawia z API, więc CMS można wymienić (np. z PHP na Node.js) bez przepisywania wyglądu, o ile kontrakt API zostanie ten sam.
  • Niezależne zespoły. Frontend i backend mogą być rozwijane i wdrażane osobno.
  • Jedna treść, wiele kanałów. To samo API zasili stronę, aplikację mobilną, ekran w sklepie czy newsletter.
  • Wydajność. Strony wygenerowane statycznie i serwowane z CDN ładują się bardzo szybko. Sam headless tego nie gwarantuje – to zasługa SSG/SSR i cache, a o resztę (obrazy, loading=”lazy”, JavaScript) trzeba zadbać jak wszędzie.
  • Bezpieczeństwo. Panel admina i baza mogą być na innym serwerze niż publiczna strona, a strona statyczna nie wykonuje kodu po stronie serwera. Mniejsza powierzchnia ataku nie zwalnia jednak z zabezpieczenia API.

Wady headless CMS

Nie ma idealnych rozwiązań. Tak i tutaj znajdą się wady.

  • Koszty. Zamiast jednej aplikacji masz dwie (albo więcej): CMS i frontend, każde z własnym hostingiem, aktualizacjami i monitoringiem. To nie jest postawienie strony na WordPressie kilkoma kliknięciami.
  • Potrzebni są programiści. Podgląd przed publikacją, formularze, wyszukiwarka, mapa witryny, przekierowania – w tradycyjnym CMS-ie załatwia je wtyczka, tu często trzeba je napisać. Co więcej – często tworzony jest cały proces, od pomysłu, implementacji, testów i wdrożenia. Czasami może to znacząco wydłużać zmiany.
  • Redaktor traci część wygody. Bez dobrze skonfigurowanego podglądu edytuje „pola”, a nie stronę. Częściowo rozwiązują to edytory wizualne WYSIWYG (np. w Storyblok).
  • Widoczność w wyszukiwarkach (SEO). Wiele firm o tym zapomina. A wiem, co piszę, bo robię audyty SEO i pomagam takim serwisom być bardziej widocznymi w Google. Jeżeli headless zostanie źle zaprojektowany pod wyszukiwarki, naprawa będzie kosztowna i długotrwała.

SEO w headless CMS: SSR i SSG

Google przetwarza strony z JavaScriptem w trzech etapach: pobranie, renderowanie (w kolejce, w przeglądarce Chromium) i indeksowanie. Potrafi więc wykonać JavaScript, ale sam zaznacza, że renderowanie po stronie serwera albo wstępne renderowanie to wciąż dobry pomysł – strona jest szybsza dla ludzi i robotów, a nie wszystkie roboty uruchamiają JavaScript.

W praktyce przy headless CMS:

  • wybierz SSG lub SSR (np. Next.js, Nuxt, Astro), a nie czysty CSR – treść, tytuł, meta description i dane strukturalne mają być w HTML-u od razu,
  • nie licz na dynamic rendering (osobna wersja dla robotów) – Google opisuje go jako obejście, a nie rozwiązanie długoterminowe, i zaleca SSR, renderowanie statyczne lub hydrację,
  • przenieś to, co dawała wtyczka SEO – mapę witryny, canonicale, przekierowania 301, noindex, linki wewnętrzne.

Więcej o tym, jak wyszukiwarki radzą sobie z aplikacjami w JS, piszę w tekście o JavaScript SEO.

Wdrożenie headless CMS – rola programistów

Wdrożenie headless CMS to w praktyce projekt programistyczny, nie instalacja gotowca. Zwykle wygląda tak:

  1. Model treści – jakie typy treści (wpis, produkt, autor) i pola są potrzebne. To robi się razem z redakcją. Powstaje wtedy tzw. kontrakt pomiędzy backendem a frontendem.
  2. Wybór CMS-a – open source na własnym serwerze (Strapi, Payload, WordPress), SaaS (Sanity, Contentful, Storyblok), z uwzględnieniem kosztów i limitów planów a może coś własnego pisane pod siebie.
  3. Frontend – framework, strategia renderowania (SSG/SSR/ISR), podgląd dla redaktorów.
  4. Integracje – webhooki do przebudowy, wyszukiwarka, formularze, analityka.
  5. SEO i migracja – mapa witryny, przekierowania ze starych adresów, dane strukturalne.

Programiści są tu potrzebni nie tylko na start, ale też do utrzymania: aktualizacji dwóch aplikacji, zmian w modelu treści i nowych funkcji, które w klasycznym CMS-ie dałaby wtyczka.

Headless czy tradycyjny CMS – kiedy co wybrać?

Jeżeli chcesz mieć prostą stronę, np. wizytówkę firmy, bloga czy niewielki sklep, headless CMS raczej nie jest dla ciebie. To będzie przerost formy nad treścią i dodatkowe koszty. Tradycyjny CMS z dobrym motywem zrobi to taniej.

Headless warto rozważyć, gdy:

  • ta sama treść ma trafiać do strony i aplikacji mobilnej (lub innych kanałów),
  • masz zespół frontendowy, który chce pracować w nowoczesnym frameworku,
  • tworzysz zaawansowaną aplikację webową i chcesz mieć pełną kontrolę nad wydajnością,
  • masz kilka serwisów zasilanych z jednego źródła treści.

FAQ


01Co to jest headless CMS w prostych słowach?+
To system do zarządzania treścią bez własnego wyglądu strony. Redaktor wpisuje treść w panelu, a CMS udostępnia ją przez API. Wygląd tworzy osobna aplikacja (frontend), np. w Next.js.

02Czy WordPress może być headless CMS?+
Tak. Od wersji 4.7 WordPress ma w rdzeniu REST API, a wtyczka WPGraphQL dodaje GraphQL. Panel służy wtedy tylko do edycji treści, a stronę renderuje osobny frontend.

03Jakie są darmowe headless CMS open source?+
Najpopularniejsze to Strapi (edycja Community na licencji MIT), Payload (MIT) i WordPress (GPL). Sanity Studio też jest open source, ale treść przechowuje w chmurze Sanity.

04Czy headless CMS jest dobry dla SEO?+
Może być, jeśli frontend renderuje treść na serwerze (SSR) albo przy budowaniu (SSG). Strona, która ładuje treść dopiero w przeglądarce, jest trudniejsza dla wyszukiwarek i wolniejsza.

05Czym różni się headless CMS od tradycyjnego?+
Tradycyjny CMS łączy panel, treść i szablony strony w jednej aplikacji. Headless oddziela treść (CMS + API) od prezentacji (frontend), co daje swobodę, ale wymaga więcej pracy programistów.

Opublikowano · Znalazłeś błąd? Napisz
Piotr Cichosz
Autor

Od ponad 10 lat jestem zaangażowany w świat elektroniki użytkowej, zdobywając szeroką wiedzę i doświadczenie w testowaniu oraz recenzowaniu najnowszych technologii. Moja kariera obejmuje pracę w wiodących firmach technologicznych, gdzie specjalizowałem się…

Czytaj dalej
← Poprzedni Zestaw LEGO MRI (rezonans magnetyczny) tylko dla szpitali, aby dzieci nie bały się badania