Headless bir CMS içeriğinizi saklar ve bir API üzerinden teslim eder. Sayfa render etmez. Tema yok, şablon yok, ön uç yok — o kısmı siz inşa edersiniz.
Tüm tanım bu. Bu makaledeki diğer her şey, bunun sizin için iyi bir takıs olup olmadığıyla ilgili ve dürüst cevabın çoğu "kaç ön ucunuz olduğuna bağlı".
Geleneksel bir CMS'te — WordPress, Drupal, kullandığınız şeylerin çoğu — içerik depolama ve sayfa render'ı aynı sistemde yaşar. Bir yazı yazarsınız, CMS onu bir veritabanına koyar ve aynı CMS onu bir tema kullanarak HTML'e dönüştürür. Kullanışlı ve ayrılmaz.
"Headless", render eden yarıyı kaldırmak demektir. Geriye kalan:
içerik tiplerini ve alanlarını tanımlayacak bir yer
yazanlar için bir editör
yapılandırılmış içerik döndüren bir API — HTML değil, JSON
Takıs çarpıcı. Bedava web sitesini kaybedersiniz. Bir web sayfası biçiminde olmayan ve bu nedenle web sayfası olmayan şeyler tarafından kullanılabilen bir içerik kazanırsınız.
İki kelimeyi de göreceksiniz. Kesin olarak, decoupled bir CMS hâlâ kullanmayı seçebileceğiniz bir render katmanı gönderir; headless olanın hiç yoktur. Pratikte insanlar bunları birbirinin yerine kullanır ve ayırım nadiren bir kararı değiştirir.
Herhangi bir ürün hakkında sorulmaya değer soru daha basit: bir sayfa render edebilir mi? Evetse, onunla headless'a geçmek bir render'ıcı çalıştırıp sonra çıktısını göz ardı etmek demektir.
Birden fazla ön ucunuz var. Bir web sitesi, bir iOS uygulaması, bir kiösk, bir besleme isteyen bir iş ortağı. Geleneksel bir CMS'te ikinci tüketici bir kazıma (scraping) sorunudur. Headless bir CMS'te ise ikinci bir API istemcisidir.
Birden fazla projeniz var. On müşterili bir ajans, beş markalı bir grup, her müşterinin kendi içeriğine ihtiyaç duyduğu bir SaaS. Fiyatlandırma modellerinin keskin bir şekilde ayrışmaya başladığı yer burasıdır — bazı ürünler proje başına, veri kümesi başına ya da alan başına ücret alır ve üçüncü projede bunu öğrenirsiniz.
İçeriğiniz sayfa biçiminde değil. Bir ürün kataloğu, bir doküman sitesi, bir değişiklik günlüğü, bir ilan panosu. "Yazı" modeliyle özel alanlar kullanarak boğuşuyorsanız, faydası olmadan vergiyi zaten ödüyorsunuz demektir.
Yerelleştirme gerçek. "Menüyü çevirdik" değil — gerçekten birkaç dilde paralel içerik, dil başına farklı yayın durumlarıyla. Geleneksel CMS'ler bunu eklentilerle yapar. Headless olanlar bunu alan düzeyinde bir özellik olarak ele alır.
Ön uç performansı bir iş sayısı. Ayırma (decoupling), her istekte bir sayfayı hesaplamak yerine önceden render edilmiş, önbelleğe alınabilir çıktı servis etmenizi sağlar. Bu otomatik değildir, ama mümkün hâle gelir.
Bu, çoğu satıcı makalesinin atladığı bölümdür, çünkü satış yapıyorlar.
Tek site, tek dil, tek ekip, geliştirici yok. Headless bir CMS render işini size taşır. O işi kimse yapmayacaksa, bir eksiltme için para ödemişsiniz demektir. WordPress ya da bir site oluşturucu kullanın ve parayı içeriğe harcayın.
Beş sayfalık bir tanıtım sitesi. API, derleme adımı, dağıtım hattı ve ön uç deposu, yılda iki kez değişen beş sayfaya karşı hepsi ek yüktür.
Ekibiniz görsel bir önizlemeyle düzenliyor ve bundan vazgeçmeyecek. Bazı headless ürünlerin mükemmel canlı önizlemesi var; birçoğunun hiç yok. "Yazarken sayfayı görmek istiyorum" pazarlık konusu değilse, bunu kriterlerinizin başına koyun ve adayları erkenden elemesine izin verin.
Bir eklenti ekosistemine ihtiyacınız var. Rezervasyonlar, formlar, üyelikler, e-ticaret — siteniz hazır modüllere bağlıysa, headless bunları yazmak demektir. Bu bir ayrıntı değil, bir bütçe kalemidir.
Kullanışlı bir test: ön uçlarınızı sayın ve projelerinizi sayın. İkisi de birse, dürüst cevap genellikle "henüz değil".
Bir tanesine ihtiyacınız olduğuna karar verdikten sonra, faturanıza karar veren model, satıcının okumalar için nasıl ücret aldığıdır.
Çoğu barındırılan headless ürün, ziyaretçi trafiğinin hareket ettirdiği bir şeyi sayaçla ölçer: API çağrıları, bant genişliği, CDN istekleri veya birleşik bir kullanım kotası. Sonuç söylemesi kolay, kaçırması kolaydır: başarılı bir lansman, faturalandırma olayından ayırt edilemez. İçeriğinizde veya işinizde hiçbir şey değişmedi — yalnızca onu okuyan yabancıların sayısı.
Mimari bir alternatif var ve hangi ürünü seçerseniz seçin anlamaya değer: her istekte bir yanıt hesaplamak yerine, yayınlanan içeriği bir önbellekten önceden derlenmiş, değişmez dosyalar olarak servis etmek.
corpusctl böyle çalışır. Yayınla'ya basmak bir derleme çalıştırır: içerik doğrulanır, render edilir ve nesne deposundaki hash ile adreslenen bir dosyaya yazılır, ardından manifest yenilenir. Okuyucunun istemcisi slug'ı yerel olarak bir manifest parçasına çözer, ardından o adresi nginx kenar önbelleğinden çeker. Adres bir içerik hash'i olduğu için, aynı adres asla farklı içerik döndüremez — dolayısıyla hiçbir invalidation stratejisi olmadan otuz gün önbelleğe alınabilir. Yayınlamak yeni bir adres yazar.
İki HTTP isteği, ikisi de önbellekten. Hiçbiri API'ye ulaşmaz. Hiçbiri veritabanına ulaşmaz. Çağrı başına sayaç yok, çünkü çağrı başına bir şey yok.
Bunu bir kriter olarak kullanmak için corpusctl'i seçmek zorunda değilsiniz. Herhangi bir satıcıya sorun:
bu yazı beklenenden on kat daha iyi giderse faturama ne olur?
Headless WordPress gerçek bir headless CMS mi? İşlevsel olarak evet — REST API ve WPGraphQL içeriği açığa çıkarır. Mimari olarak bir sonradan uyarlamadır: sayfa render'ı makinesini korur ve sonra çıktısını atarsınız.
SEO'ya zarar verir mi? Doğası gereği değil. Ekiplerin bir geçişte trafik kaybetmesinin üç yaygın yolu, yalnızca istemcide render etmek, yeniden inşa sırasında canonical etiketlerini düşürmek ve bir önbellek yerine yavaş bir kökenden servis etmektir.
Daha mı pahalı? Genellikle başlangıçta mühendislik zamanı açısından daha pahalı ve tam olarak üç web sitesi inşa etmek üzere olduğunuz özel durumda daha ucuz.
Bir headless CMS'te 'açık kaynak' aslında ne kadara mal olur
Açık kaynak nadiren çalıştırması ücretsiz demektir. Lisanslar, bulut üst satışları ve altı popüler headless CMS'in doğrulanmış maliyeti — kendi sayfalarından alınan sayılarla.