Hydrogen’ı nerede barındırmalı: Oxygen mı, Workers mı?
Kısa yanıt
Oxygen, bir Hydrogen vitrininin varsayılan evidir: ücretli Shopify planlarında ek ücret olmadan sunulur ve ortamları, değişkenleri, önbelleği ve Shopify’ın CDN’ini yönetir. Shopify kendi kendine barındırmayı da belgeler ve adı geçen çalışma ortamları arasında Cloudflare Workers da vardır; ancak bu durumda Oxygen paketlerini değiştirir, Web Cache API uyumlu bir önbellek ve oturum yönetimi sağlar ve edge önbelleğinin sorumluluğunu üstlenirsiniz. Oxygen’ın vermediği bir altyapıya ya da planınızın sağlayamadığı bir public URL’ye ihtiyacınız yoksa Oxygen’ı seçin.
- Oxygen ücretli Shopify planlarında ek ücret olmadan sunulur; Agentic planlarda yoktur.
- Geliştirme mağazaları ve deneme planları Oxygen’a yayın yapabilir ama public ortamları yoktur; Starter’dan Advanced’e kadar planlar bir, Shopify Plus 25 public ortam alır.
- Shopify’ın kendi kendine barındırma kılavuzu Hydrogen için başka çalışma ortamları olarak Vercel, Netlify, Fly.io ve Cloudflare Workers’ı sayar; API token’ları için Headless kanalını gerektirir.
- Workers Free planı HTTP isteği başına 10 ms CPU süresine izin verir; Paid plan varsayılan olarak 30 saniyeye izin verir ve bu 5 dakikaya kadar ayarlanabilir.
- Workers Cache, önbellekteki yanıtları Worker’ı çalıştırmadan döndürür; anahtarı istek yolu, entrypoint, ctx.props ve varsayılan olarak Worker sürümüdür.
Hydrogen vitrini sunucu tarafında render edilen bir uygulamadır; yani çalışacak bir yere ihtiyacı vardır. Shopify, Hydrogen için geliştirilmiş Oxygen’ı sunar. Shopify, Hydrogen’ı başka JavaScript çalışma ortamlarında çalıştırmayı da belgeler; Cloudflare Workers bunlardan biridir. Bu web sitesini Workers üzerinde çalıştırıyoruz; yani bu karşılaştırma hem dokümantasyona hem de kendi yayınımıza dayanıyor.
Oxygen size ne verir?
- Maliyet ve planlar. Oxygen ücretli Shopify planlarında ek ücret olmadan sunulur: Starter, Basic, Grow, Advanced, Plus ve Pause and build. Agentic planlarda yoktur. Geliştirme mağazaları ve deneme planları da kullanabilir, ama yalnızca özel olarak; Plus Partner Sandbox mağazaları bir public ortam alır.
- Ortamlar. Her ortam bir Git dalına bağlanır ve en fazla 110 ortam değişkeni tutabilir. Ortamlar varsayılan olarak özeldir ve mağaza girişi gerektirir. Public ortamlar: Starter, Basic, Grow, Advanced ve Pause and build’de bir, Shopify Plus’ta 25, geliştirme mağazaları ve deneme planlarında hiç yok.
- Operasyon. Shopify, Oxygen’ı yayın ortamlarını, ortam değişkeni yönetimini, önbelleği ve Shopify’ın CDN’iyle entegrasyonu üstlenen bir hizmet olarak tanımlar. Oxygen’dan ayrıldığınızda yeniden kurduğunuz ya da değiştirdiğiniz dört şey bunlardır.
- Varsayılan olarak özel önizlemeler. Ortamlar public yapılmadıkça mağaza girişi gerektirdiği için yarım kalmış işler ziyaretçilere ya da tarayıcılara yanlışlıkla açılmaz.
Kendiniz barındırınca neler değişir?
Shopify’ın kendi kendine barındırma kılavuzu Vercel, Netlify, Fly.io ve Cloudflare Workers’ı sayar. Shopify tarafındaki gereksinim, Storefront API ve Customer Account API erişimini sağlayan Headless kanalıdır. Sizin tarafınızdaki iş:
- Oxygen’a özel paketleri kaldırın ve
vite.config.ts,react-router.config.tsve sunucu giriş dosyasını uyarlayın. Hydrogen’ın kendi Vite eklentisi kalır. - Hydrogen’ın Storefront API önbelleği çalışmaya devam etsin diye standart Web Cache API’yi uygulayan bir önbellek sağlayın.
- Çalışma ortamınız için oturum yönetimini kurun ve
waitUntilgibi arka plan işlerini nasıl desteklediğini kontrol edin. - Sunucu tarafındaki Storefront API isteklerine
Shopify-Storefront-Buyer-IPheader’ını ekleyin. Bu olmadan Shopify alıcıları birbirinden ayıramaz; bu da isteklerin kısıtlanmasına yol açabilir. - Önizlemeler artık mağaza girişiyle korunmadığı için önizleme ile production’ı kendiniz ayırın; production dışındaki her şey için bir noindex kuralı da ekleyin.
Cloudflare Workers’a özgü noktalar
| Sınır | Workers Free | Workers Paid |
|---|---|---|
| İstekler | Günde 100.000 | Günlük sınır yok |
| HTTP isteği başına CPU süresi | 10 ms | Varsayılan 30 saniye, en fazla 5 dakika |
| Çağrı başına alt istek | 50 | 10.000 (en fazla 10 milyon) |
| Worker boyutu, sıkıştırılmamış | 64 MiB | 64 MiB |
| Isolate başına bellek | 128 MB | 128 MB |
On milisaniyelik CPU, bir React sayfasını sunucuda render etmek için dar bir bütçedir. Burada dengeyi değiştiren Workers Cache’tir: Cloudflare, Worker’ı çağırmadan önce önbelleğe bakar; önbellekte bulunan bir yanıt kodunuz hiç çalışmadan döner, yani CPU harcamaz. Önbellek, stale-while-revalidate dahil standart Cache-Control yönergelerine uyar; çerez ayarlayan yanıtları ve Authorization header’ı taşıyan istekleri atlar. Önbellek anahtarı hostname değil; istek yolu, entrypoint, ctx.props ve varsayılan olarak Worker sürümüdür.
Her seçeneğin işletme maliyeti
Ücretli bir Shopify planında Oxygen ayrı bir barındırma faturası getirmez. Workers’ta Cloudflare’in fiyatlarını ödersiniz ve Workers Cache bu faturanın yapısını değiştirir: etkinleştirildiğinde her istek standart Workers istek ücretiyle faturalandırılır, önbellek için ek ücret yoktur ve CPU süresi yalnızca Worker gerçekten çalıştığında faturalandırılır. Sayfaları çoğunlukla önbellekten dönen bir vitrin az CPU harcar; her isteği render eden bir vitrin ise her ziyarette harcar. İki seçenekte de asıl büyük maliyet mühendislik zamanıdır ve kendi kendine barındırma buna biraz ekler: oturumlar, önbellek header’ları, önizleme ortamları ve yükseltme testleri sizin işinizdir.
Kendiniz barındırırken Storefront API önbelleği
Hydrogen’ın veri önbelleği ile sayfaların tamamı için edge önbelleği iki ayrı katmandır ve kendi kendine barındırma ikisine de dokunur:
- Alt istek önbelleği. Hydrogen, Storefront API yanıtlarını ona verdiğiniz önbellek nesnesi üzerinden önbelleğe alır. Workers’ta bu, çalışma ortamının Web Cache API’sidir (
caches.open(…)); bu site de Hydrogen’ın context’ine bunu veriyor. - Sayfa önbelleği. Render edilmiş bir sayfanın önbelleğe alınıp alınmayacağına yanıtta ayarladığınız header’lar ve barındırıcı karar verir. Workers’ta bu, Workers Cache ve sizin
Cache-Controlkurallarınız demektir. - Kişisel veri. Çerez ayarlayan yanıtlar hiçbir paylaşılan önbelleğe girmemelidir. Workers Cache,
Set-Cookieiçeren yanıtları veAuthorizationheader’ı taşıyan istekleri atlar; ama sizin kurallarınız da bunu açıkça söylemelidir.
Ne çalıştırıyoruz ve neden?
Bu web sitesi Cloudflare Workers’tan sunulan bir Hydrogen 2026.4 uygulamasıdır; Oxygen production hattının bir parçası değildir. Build zaten bir Worker paketi ve statik dosyalar üretiyor; bu yüzden taşımak yeniden yazmayı değil, yapılandırmayı gerektirdi. Önbellek politikası sunucu giriş dosyasında duruyor:
- Public HTML edge’de bir saat önbellekte tutulur ve arka plandaki tek bir istek onu yenilerken bir gün boyunca eski hâliyle sunulabilir. Tarayıcılar her zaman yeniden doğrular.
- Çerez ayarlayan, yönlendiren, sunucu hatasıyla dönen ya da okuma olmayan hiçbir şey önbelleğe alınmaz; böylece oturum verisi paylaşılan önbelleğe sızamaz. Bulunamayan sayfalar yalnızca bir dakika önbellekte tutulur.
- Önbellek anahtarı Worker sürümünü içerdiği için her yayın boş bir önbellekle başlar ve hiçbir zaman eski bir build’den HTML sunmaz.
- Önizleme yayınları,
noindexheader’lı ayrı bir Worker’dır; Oxygen’da bu işi platform bizim yerimize yapardı.
Geliştirdiğimiz Hydrogen vitrini Snow / Motion iki barındırıcıyı da kullanır. GitHub Actions ile Oxygen’a yayına alınır; ama public Oxygen ortamı olmayan bir geliştirme mağazasında çalıştığı için public kopyası Workers’tan sunulur.
Karar vermeden önce neyi test etmeli?
- Planınız izin veriyorsa aynı build’i iki barındırıcıya da yayına alın ve önemli sayfaların yanıt sürelerini müşterilerinizin bulunduğu bölgelerden karşılaştırın.
- Workers’ta önbellekte olmayan sayfalar için istek başına CPU süresini Workers loglarında kontrol edin. Free planın 10 ms’ine yaklaşıyorsa Paid plana geçmeyi ya da daha agresif önbelleklemeyi planlayın.
- Giriş yapmış ya da sepeti dolu bir ziyaretçinin hiçbir zaman başkası için hazırlanmış önbellekteki bir sayfayı almadığını doğrulayın.
- Kendi kendine barındırmanın her seferinde size neye mal olduğunu erkenden görmek için yayından önce kendi barındırdığınız sürümde bir Hydrogen yükseltmesi yapın.
Nasıl seçilir?
| Durum | Daha uygun olan |
|---|---|
| En az hareketli parçayı isteyen, ücretli plandaki bir mağaza | Oxygen |
| Birkaç public ortam gerekiyor (staging, pazar önizlemeleri) | Plus’ta Oxygen ya da kendi barındırma |
| Vitrinin zaten çalıştırdığınız başka Worker’lar, binding’ler ya da altyapıyla yan yana durması gerekiyor | Workers’ta kendi barındırma |
| Özel bir barındırıcıda önbelleği, oturumları ve yükseltmeleri sahiplenecek bir geliştirici yok | Oxygen |
| Bir geliştirme mağazasından public URL (demolar, prototipler) | Kendi barındırma |
Varsayılan tercihiniz Oxygen olsun. Kendi kendine barındırma makul bir seçimdir, ama önbellek, önizleme ve yükseltme testi işlerini ekibinize taşır. Headless’ın sizin için doğru olup olmadığına hâlâ karar veriyorsanız Hydrogen mı, Liquid mi yazısıyla başlayın.
Sık sorulan sorular
- Oxygen ücretsiz mi?
- Shopify, Oxygen’ın ücretli Shopify planlarında ek ücret olmadan sunulduğunu belirtir. Agentic planlarda yoktur.
- Bir geliştirme mağazası Oxygen’da public bir Hydrogen sitesine sahip olabilir mi?
- Hayır. Geliştirme mağazaları ve deneme planları Oxygen’a yayın yapabilir ama public ortamları yoktur; bu yüzden her yayın adresi mağaza girişi gerektirir.
- Hydrogen Cloudflare Workers üzerinde çalışabilir mi?
- Evet. Shopify’ın kendi kendine barındırma kılavuzu Cloudflare Workers’ı Vercel, Netlify ve Fly.io ile birlikte sayar. API token’ları için Headless kanalına, Web Cache API uyumlu bir önbelleğe ve bir oturum yönetimine ihtiyacınız olur.
- Storefront API kendi barındırdığım vitrini neden kısıtlıyor?
- Sunucu tarafındaki istekler, alıcının IP adresiyle Shopify-Storefront-Buyer-IP header’ını taşımalıdır. Bu olmadan Shopify alıcıları birbirinden ayıramaz; bu da isteklerin kısıtlanmasına yol açabilir.
