SvelteKit Dağıtım SEO'su: Adapter'lar, Prerendering ve Edge Oluşturma
SvelteKit'in adapter'ı ve rota başına prerender ayarları sayfalarınızın nerede ve ne zaman oluşturulacağını belirler — bu da TTFB'yi, LCP'yi ve crawl budget'ı etkiler. Dağıtım odaklı derinlemesine inceleme: adapter-static/node/vercel/cloudflare/netlify seçimi, prerender = true/false/'auto', edge runtime kısıtları ve sitemap.xml ile robots.txt oluşturma.
Diller
SvelteKit'in adapter'ı ve rota başına prerender ayarı, sayfanın nerede ve ne zaman oluşturulacağını — derleme zamanında statik HTML, sunucuda SSR veya edge'de SSR — belirler; bu karar TTFB'yi, dolayısıyla LCP'yi ve tarama kapasitesini etkiler. Saf içerik siteleri için adapter-static, karma içerik ve uygulama siteleri için rota başına prerender kullanan node/vercel/cloudflare adapter'ı, küresel TTFB önemliyse edge adapter'ı seçin (soğuk başlangıçları ve Node fs'inin olmamasını kabul ederek). prerender = 'auto' karma site aracıdır. Edge runtime'ları dosya sistemini okuyamaz. SvelteKit sitemap.xml veya robots.txt üretmez — bunları adapter'ınıza göre +server.js endpoint'leri olarak oluşturmanız gerekir.
TL;DR — SvelteKit sayfalarınızı zaten sunucuda oluşturur — bu kısım halledilmiştir. Bu sayfa bir sonraki kararla ilgilidir: siteniz nasıl derlenip dağıtılacak? Bir adapter, SvelteKit uygulamanızı bir host için (statik dosya hostu, Node sunucusu veya Vercel ya da Cloudflare gibi bir hizmet) paketler; her sayfadaki prerender ayarı ise sayfanın önceden düz bir HTML dosyasına dönüştürülüp dönüştürülmeyeceğini veya her ziyarette yeniden oluşturulup oluşturulmayacağını belirler. Bu iki tercih, tarayıcıların HTML’nize ne kadar hızlı ulaşacağını belirler — ayrıca SvelteKit sitemap’inizi veya robots.txt dosyanızı oluşturmaz, bunları kendiniz eklemelisiniz.
Adapter nedir (basitçe)
Daha önce bir SvelteKit sitesi oluşturduysanız tarayıcıya gerçek HTML gönderdiğini bilirsiniz — içerik, JavaScript çalışmadan önce oradadır. Güzel. Zor SEO problemi zaten çözülmüştür (henüz sizin için çözülmediyse, aynı bölümdeki SvelteKit temelleri makalesi önce kaçınmanız gereken oluşturma kiplerini ve “empty shell” tuzağını ele alır).
Bir adapter, tamamlanmış SvelteKit derlemenizi belirli bir hostun çalıştırabileceği bir şeye dönüştüren küçük eklentidir. Evidence for this claim SvelteKit adapters transform a built application for deployment to a particular environment. Scope: SvelteKit adapters. Confidence: high · Verified: SvelteKit: Adapters Aynı site, farklı paket:
adapter-static, her sayfayı bir kez derlenen düz bir HTML dosyasına dönüştürür. Ziyaretçiye göre değişmeyen blog, dokümantasyon veya pazarlama sitesi için harikadır.adapter-node, uygulamanızı kendiniz çalıştırdığınız bir Node.js sunucusuna sarar.adapter-vercel,adapter-netlify,adapter-cloudflare, uygulamayı isteğe göre sayfa oluşturan bu barındırma hizmetleri için paketler — bazen ziyaretçilerinize fiziksel olarak yakın, “edge” adı verilen sunucularda.
Her durumda içerik aynıdır. Değişen şey HTML’nin ne zaman (önceden veya her istekte) ve nerede (tek sunucuda veya küresel bir ağda) oluşturulduğudur.
Neden yalnızca teknoloji değil, SEO kararıdır
Temel konu hızdır. Zaten statik bir dosya olan sayfa neredeyse anında yüklenir. Sunucuda derlenmesi gereken sayfanın beklemesi gerekir. Google da bunu açıkça şöyle söyledi: “responds quickly for a while, the limit goes up, meaning more connections can be used to crawl. If the site slows down… the limit goes down and Google crawls less.” Bu nedenle yavaş bir dağıtım yalnızca kullanıcıları rahatsız etmez — Google’ın sitenizin daha azını okuyacağı anlamına da gelebilir.
Kararın basit hâli
- İçerik sitesi (blog, dokümantasyon, pazarlama) →
adapter-statickullanın ve her şeyi prerender edin. Mümkün olan en hızlı seçenek; bozulacak hiçbir şey yok. - Birkaç dinamik parçası olan içerik sitesi (arama, yorumlar) → bir sunucu adapter’ı (
node/vercel/cloudflare) kullanın ve içerik sayfalarınıprerender = trueyapın; dinamik parçaların istekte oluşturulmasını sağlayın. - Oturum açılmış, kişiselleştirilmiş sayfaları olan uygulama veya kontrol paneli → sunucuda oluşturun (SSR), yalnızca herkese açık pazarlama sayfalarını prerender edin.
SvelteKit’in sizin için oluşturmayacağı iki dosyayı unutmayın
SvelteKit sitemap.xml veya robots.txt dosyasını otomatik oluşturmaz. Bunları kendiniz eklersiniz — genellikle küçük bir endpoint dosyası (sitemap.xml/+server.js) ve static/ klasöründe bir dosya veya robots.txt için başka bir endpoint. Evidence for this claim SvelteKit can serve static assets from its static directory and create custom responses with +server route files. Scope: Mechanisms for robots.txt and sitemap.xml; files are not generated automatically. Confidence: high · Verified: SvelteKit: Project structure SvelteKit: Routing HTML oluşturan çoğu framework “tamamlanmış” gibi hissettirdiği için bunu unutmak kolaydır. Bu ikisi öyle değildir.
Daha derin sürümü — her adapter’ın oluşturmaya ne yaptığını, prerender = 'auto'’nun karma bir siteyi nasıl yönettiğini, edge fonksiyonlarının dosya okuyamamasını ve sitemap stratejisinin adapter’ınızla nasıl değiştiğini — ister misiniz? Gelişmiş sekmesine geçin.
TL;DR — Adapter, SvelteKit’in neyi oluşturduğunu değiştirmez — nerede ve ne zaman oluşturduğunu değiştirir: derleme zamanında statik (
adapter-static), sizin çalıştırdığınız bir sunucuda istek zamanında (adapter-node) veya serverless/edge fonksiyonlarında istek zamanında (adapter-vercel/-netlify/-cloudflare). Rota başınaprerender = truestatik HTML oluşturur ve rotayı dinamik manifestten çıkarır;prerender = 'auto'hem prerender eder hem de rotayı manifestte tutar — karma/blog/[slug]siteleri için kullanılan araç budur. Edge runtime’ları V8 isolate’larında çalışır: Nodefsyoktur ve soğuk başlangıçlar TTFB’yi kötüleştirir; bu da LCP’yi ve (Google’ın crawl-budget belgesine göre) tarama kapasitesini etkiler. SvelteKit hiçbir sitemap.xml veya robots.txt oluşturmaz — bunları+server.jsendpoint’leri olarak kurun ve stratejinin adapter’a bağlı olduğunu unutmayın. Bu, bölümdeki SvelteKit SEO temelleri makalesinin daha dar, dağıtım odaklı eşidir; SvelteKit’in varsayılan olarak SSR kullandığını zaten bildiğinizi ve bunu burada yeniden tartışmayacağımızı varsayıyorum.
Her şeyi yerine oturtan tek fikir
Adapter, neyin oluşturulduğunu değiştirmez. Nerede ve ne zaman oluşturulduğunu değiştirir. Bütün mesele budur. SvelteKit belgeleri bunu kesin olarak şöyle ifade eder: adapter’lar “take the built app as input and generate output for deployment.” Evidence for this claim SvelteKit adapters take the built application as input and generate deployment-specific output. Scope: Deployment output; adapter choice can still constrain supported runtime features. Confidence: high · Verified: SvelteKit: Adapters Bileşenleriniz, load fonksiyonlarınız ve <svelte:head> metadata’nız her adapter’da aynıdır. Değişenler şunlardır:
- HTML’nin üretildiği zaman: derleme zamanında (statik/prerender edilmiş) veya istek zamanında (sunucuda, serverless fonksiyonunda ya da edge fonksiyonunda SSR).
- Üretildiği yer: tek bir origin sunucusu, bölgesel bir serverless fonksiyonu veya ziyaretçiye yakın bir edge ağı.
Aşağıdaki her şey bu iki eksenin sonucudur.
Dağıtım tercihleri neden SEO tercihleridir
Zincir kısa ve iyi belgelenmiştir: TTFB → LCP → tarama kapasitesi.
İlk byte’a kadar geçen süre, hostun yanıtı göndermeye başlamasının ne kadar sürdüğüdür. CDN önbelleğinden sunulan prerender edilmiş bir dosyanın TTFB’si neredeyse sıfırdır. Sayfayı oluşturması gereken bir sunucununki daha yüksektir. Soğuk başlayan bir serverless veya edge fonksiyonunun ilk istekteki TTFB’si çok daha yüksek olabilir. TTFB, Largest Contentful Paint için doğrudan girdidir — almadığınız şeyi boyayamazsınız — ve LCP, Core Web Vitals sinyalidir.
Tarama tarafında Google en açık konuştuğu noktadadır. Crawl-budget belgelerinden: “If the site responds quickly for a while, the limit goes up, meaning more connections can be used to crawl. If the site slows down or responds with server errors, the limit goes down and Google crawls less.” En iyi uygulama satırı da şöyledir: “Make your pages efficient to load. If Google can load and render your pages faster, we might be able to read more content from your site.” Yanıt vermesi yavaş olan soğuk başlayan bir edge fonksiyonu, yavaş bir origin sunucusuyla aynı dinamiğe tabidir.
Başta bir dürüstlük notu: Google, SvelteKit’e özgü bir kılavuz yayımlamıyor. SvelteKit adapter’larını, prerender = 'auto'’yu veya edge soğuk başlangıçlarını adlandıran bir belge ya da Search Off the Record bölümü yok. Burada yaptığım, Google’ın genel oluşturma ve crawl-budget kılavuzunu SvelteKit’in mekaniklerine uygulamak — SvelteKit hakkında yorum yapmış bir temsilciden alıntı yapmak değil, çünkü böyle bir yorum yok. “server-side or pre-rendering is still a great idea because it makes your website faster for users and crawlers, and not all bots can run JavaScript” şeklindeki Google çerçevesi, SvelteKit’ten bağımsız en yakın resmî dayanak.
SEO sonuçları için adapter seçmek
adapter-auto — sıfır yapılandırmalı varsayılan ve sınırı
Yeni SvelteKit projeleri adapter-auto ile gelir. Platformu — Vercel, Netlify, Cloudflare Pages, Azure, AWS — algılar ve eşleşen adapter’ı derleme zamanında kurar. İyi bir başlangıçtır, ancak bilinmesi gereken kesin bir sınır vardır: adapter-auto hiçbir seçenek almaz. { edge: true }, Cloudflare binding’leri, Vercel ISR veya platforma özel bir yapılandırmaya ihtiyaç duyduğunuz anda temel adapter’ı (adapter-vercel, adapter-cloudflare vb.) doğrudan kurarsınız. Auto’yu üretim kararı değil, iskelet olarak görün.
adapter-static — içerik öncelikli siteler için tam SSG
adapter-static, sitenizin tamamını derleme zamanında statik dosyalara prerender eder. Sunucu çalışmaz; bir host düz HTML sunar. Evidence for this claim adapter-static prerenders a SvelteKit site as static files. Scope: Routes must be prerenderable; performance outcomes depend on hosting and page design. Confidence: high · Verified: SvelteKit: Static site generation İçerik öncelikli bir site için bu, sahip olabileceğiniz en güçlü SEO profilidir — en düşük TTFB, soğuk başlangıç yok, devrilecek hiçbir şey yok. Tek gereklilik, temeller makalesinde ayrıntılı biçimde ele alınan tuzaktır: derleme sırasında SSR açık kalmalıdır, yoksa oluşturulmuş HTML yerine boş kabuklar alırsınız. Burada yalnızca buna işaret edeceğim; yeniden açıklamayacağım.
Sorun katılıktır. Gerçekten istek başına sunucu mantığı gerektiren şeyler (gerçek arama, kullanıcıya özel içerik, üçüncü taraf endpoint olmadan form işleme) tamamen statik bir derlemede yaşayamaz — sonraki adapter’lar tam bunun içindir.
adapter-node — kontrol ettiğiniz bir sunucu
adapter-node bağımsız bir Node.js sunucusu üretir. Siz çalıştırır, ölçeklendirir ve TTFB’sine sahip olursunuz. Bu, en esnek seçenek ve çalışma zamanında en az sürpriz çıkarandır — fs dahil tüm Node API’leri vardır. Altyapınız hazırsa, edge runtime’larının çalıştıramadığı Node kütüphanelerine ihtiyacınız varsa veya sıcak bir sunucudan öngörülebilir (soğuk başlangıçsız) yanıt süreleri istiyorsanız iyi seçimdir. Ödün operasyoneldir: bir sunucu çalıştırıyorsunuz ve artık hızıyla çalışma süresi sizin tarama kapasitenizdir.
adapter-vercel — serverless, edge ve ISR
adapter-vercel varsayılan olarak Vercel’in serverless fonksiyonlarına dağıtım yapar; SEO açısından önemli birkaç kaldıraç rota başına export const config ile ayarlanır:
runtime: 'edge', rotayı Vercel’in edge runtime’ına taşır (aşağıda daha fazla bilgi var).regions, serverless fonksiyonların nerede çalışacağını belirler — kullanıcılarınıza (veya veritabanınıza) daha yakın olmak gecikmeyi azaltır.isr, Incremental Static Regeneration’ı etkinleştirir:isr: { expiration: 60 }, önbelleğe alınmış statik varlığı sunar ve pencereden sonra yeniden oluşturur; böylece “the performance and cost advantages of prerendered content with the flexibility of dynamically rendered content.” elde edilir. ISR, tamamen statik ile tamamen SSR arasında gerçek bir dördüncü yoldur — ancak belgelerin kendi uyarısına dikkat edin: “Using ISR on a route withexport const prerender = truewill have no effect, since the route is prerendered at build time.” ISR ve prerender alternatiflerdir; üst üste eklenemezler.
adapter-cloudflare — Workers/Pages, küresel edge
adapter-cloudflare, Cloudflare Workers ve Pages’i hedefler — küresel bir edge ağında SSR; coğrafi olarak dağınık bir kitle için çoğu zaman en düşük TTFB. Önemli kısıt runtime’dır: Workers Node değil, V8 isolate’larında çalışır. Belgelerden: “You can’t use fs in Cloudflare Workers.” Bazı Node API’leri yalnızca nodejs_compat uyumluluk bayrağının arkasında çalışır; o durumda bile destek birebir değildir. İstek zamanında dosya okuyorsanız (yönlendirme haritası, veri dosyası veya özel OG görsel girdileri), bu kodun yeniden düşünülmesi gerekir — aşağıdaki edge bölümünde ele alınır.
(Eski adapter-cloudflare-workers kullanımdan kaldırılmıştır; yeni projeler hem Workers hem Pages’i yöneten adapter-cloudflare kullanır. Eskisini kullanıyorsanız geçiş önerilen yoldur.)
adapter-netlify — fonksiyonlar veya Edge Functions (Deno)
adapter-netlify varsayılan olarak Netlify’nin Node tabanlı fonksiyonlarına veya edge: true ile Deno tabanlı Edge Functions’a dağıtır. Vercel’e benzer: varsayılan serverless, isteğe bağlı edge. SvelteKit’e özgü bir dipnot — Netlify Forms, Netlify’nin dağıtım sırasında form işaretlemesini algılayabilmesi için formun sayfasının prerender edilmesini gerektirir; bu, adapter seçiminin üzerine eklenen küçük bir “bu rotayı prerender et” gerekliliğidir.
Karar, her biri tek satırda
- Saf içerik sitesi →
adapter-static, her şeyi prerender edin. - Dinamik küçük bölümleri olan içerik sitesi →
adapter-node/-vercel/-cloudflare, içerikteprerender = true, dinamik rotalardafalse/'auto'. - Kişiselleştirmeli uygulama/kontrol paneli → SSR öncelikli (Node veya edge), yalnızca statik kabuğu (pazarlama, giriş) prerender edin.
- Küresel, TTFB’nin kritik olduğu kitle → dinamik rotalar için bir edge adapter; Node API kısıtlarını ve soğuk başlangıç gerçeğini kabul edin.
(Karar Ağacı sekmesi bunu dallanan bir akış olarak yürütür.)
Karma siteler için prerender stratejisi
true / false / 'auto' gerçekte ne yapar
export const prerender, rota (veya layout) başına bir sayfa seçeneğidir ve bu üç değer yalnızca aç/kapa değildir:
true— bu rotayı derleme zamanında statik HTML olarak derler. Kritik nokta: “excluded from manifests used for dynamic SSR, making your server (or serverless/edge functions) smaller.” Prerender edildikten sonra rota dinamik oluşturmaya geri dönemez — tamamen statiktir.false— her zaman istekte oluşturur. Statik dosya yoktur.'auto'— karma site aracıdır. Rotayı prerender eder ve dinamik sunucu manifestinde tutar; böylece aynı rota bilinen yollar için statik, geri kalanlar için sunucu tarafından oluşturulmuş olarak sunulabilir. Belgelerin tanımladığı şu durum için tasarlanmıştır: en yeni/popüler içeriği prerender etmek, uzun kuyruğu sunucuda oluşturmak istediğiniz/blog/[slug]rotası.
Prerender edilmiş rotalar sunucu paketini küçülttüğü için, birkaç 'auto'/false rotası olan çoğunlukla prerender edilmiş bir site daha küçük, daha ucuz ve daha hızlı bir fonksiyon dağıtır — SEO’dan bağımsız bir verimlilik kazancı.
Dinamik rotalar bir entries fonksiyonuna ihtiyaç duyar
Prerender tarayıcısı sayfaları giriş noktalarından gelen <a> bağlantılarını izleyerek keşfeder. Statik rotalarda bu işe yarar, ancak /blog/[slug] gibi dinamik bir rotanın tarayıcının bulabileceği sabit bir URL’si yoktur. Belirli bir slug’a hiçbir bağlantı vermiyorsa SvelteKit onun var olduğunu bilmez — ve rotaların “were marked as prerenderable, but were not prerendered.” şeklindeki klasik derleme hatasıyla karşılaşırsınız.
Çözüm, parametre değerlerini listeleyen açık bir entries fonksiyonudur (veya config.kit.prerender.entries):
// src/routes/blog/[slug]/+page.server.js
export const prerender = true;
export function entries() {
return [
{ slug: 'hello-world' },
{ slug: 'sveltekit-deployment-seo' },
];
}Bunu pratikte CMS’nizden veya içerik dizininizden üretirsiniz. Bu liste olmadan prerendering yalnızca bağlantı tarayıcısının tesadüfen bulduğu slug’ları kapsar.
Gerçek dünyada /blog/[slug] deseni
İkisini birleştirdiğinizde kanonik karma site kurulumuna ulaşırsınız: yakın tarihli ve popüler yazılarınızı döndüren prerender = 'auto' ile bir entries fonksiyonu. Bunlar derleme zamanında statik HTML alır; listede olmayanlar isteğe göre SSR’a düşer. Yeni yazılar, bir sonraki derleme onları prerender edene kadar dinamik oluşturulur. Bu, her derlemede “40.000 yazının tamamını prerender et” ile “her istekte her yazıyı oluştur” arasındaki pratik orta yoldur.
SEO’yu etkileyen edge runtime kısıtları
config.runtime = 'edge' rota başınadır (Vercel’de)
Edge, ya hep ya hiç anahtarı değildir. Vercel’de rota başına bir sayfa seçeneğidir:
// +page.server.js or +server.js
export const config = { runtime: 'edge' };Bu, yüksek trafikli ve önbelleğe alınabilir rotaları düşük TTFB için edge’e taşırken Node’a bağlı rotaları aynı dağıtımda standart serverless (Node) runtime’ında tutabileceğiniz anlamına gelir. Bilinçli biçimde karıştırın.
fs yok, rastgele Node API’leri yok
Edge runtime’ları — Cloudflare Workers, Vercel Edge Functions, Netlify’nin Deno Edge Functions’ı — Node’un fs modülünü sağlamaz. Cloudflare belgeleri şöyle der: “You can’t use fs in Cloudflare Workers.” Vercel belgeleri de: “You can’t use fs in edge functions.” Her ikisi aynı iki kaçış yolunu gösterir: paketlenmiş varlıklara erişmek için read içindeki $app/server yardımcısını kullanın veya dosya erişiminin istek zamanında değil derleme zamanında gerçekleşmesi için “prerender the routes in question”.
Bunun SEO’ya komşu olduğu durumlar şunlardır: yazı tipi veya şablon dosyası okuyan dinamik OG görseli üretimi, dosya tabanlı yönlendirme haritaları veya diskteki içeriği okuyan bir sitemap endpoint’i. Bunların her biri ya $app/server içindeki read()’e taşınır ya da prerender/derleme zamanına alınır. Bu bir engel değil — edge’i seçmeden önce bilinmesi gereken bir kısıttır.
Soğuk başlangıçlar ve TTFB — edge ne zaman yardımcı olur, ne zaman olmaz
Edge fonksiyonları yine de soğuk başlayabilir. İlk isteğinde soğuk başlayan bir edge fonksiyonu sıcak bir Node sunucusundan daha yavaş, önbellekten sunulan prerender edilmiş bir dosyadan ise çok daha yavaş olabilir. Edge, fonksiyon sıcak kaldığında veya isteklerin çoğu fonksiyona hiç ulaşmayacak kadar agresif önbellekleme ile birlikte kullanıldığında kazanır. Otomatik olarak en hızlı seçenek değildir — “edge’e dağıt” ifadesi “daha hızlı” ile eş anlamlı değildir. Bir içerik sitesi için prerender edilmiş statik çıktı TTFB’de her zaman edge SSR’ı geçer, çünkü başlatılacak fonksiyon yoktur.
sitemap.xml ve robots.txt üretmek (SvelteKit üretmez)
Bu, çoğu SvelteKit eğitiminde atlanan ve çoğu denetimde yakalanan boşluktur. SvelteKit, adapter’dan veya kaç sayfayı prerender ettiğinizden bağımsız olarak sitemap.xml ve robots.txt dosyalarının hiçbirini otomatik üretmez. Binlerce prerender edilmiş sayfası olan tamamen statik bir site bile, siz oluşturmadıkça sitemap olmadan yayınlanır.
+server.js endpoint deseni
İdiyomatik sitemap, doğru Content-Type ile XML döndüren bir rota endpoint’idir:
// src/routes/sitemap.xml/+server.js
export const prerender = true; // needed on adapter-static
export async function GET() {
const urls = await getAllUrls(); // from your CMS/content
const body = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${urls.map((u) => ` <url><loc>${u}</loc></url>`).join('\n')}
</urlset>`;
return new Response(body, {
headers: { 'Content-Type': 'application/xml' },
});
}Strateji adapter’ınıza bağlıdır
Bu makalenin tamamını bağlayan kısım şudur: sitemap stratejiniz, adapter seçiminizin sonucudur.
adapter-staticüzerinde, sitemap endpoint’inin statik çıktıya dahil edilmesi içinexport const prerender = trueolması gerekir — runtime’da isteğe göre üretecek sunucu yoktur. Derleme sırasında gömülür; yani yalnızca son derlemeniz kadar günceldir.- Node/serverless/edge adapter üzerinde, aynı endpoint sitemap’i CMS’nizden veya veritabanınızdan her istekte dinamik olarak üretebilir — her zaman güncel, yeniden derleme gerekmez. (Edge adapter’da
fskısıtını hatırlayın: URL’leri diskten okumak yerine API veya binding üzerinden alın.)
“Sitemap’im statik mi, dinamik mi olmalı?” sorusu ayrı bir karar değildir — seçtiğiniz adapter’dan çıkar.
robots.txt: statik dosya mı endpoint mi
İki seçenek vardır. Düz bir robots.txt dosyasını static/ klasörünüze bırakın (otomatik olarak /robots.txt adresinde sunulur); bu en basit seçenektir ve çoğu site için yeterlidir. Ya da ortamlar arasında farklı olması gerekiyorsa (örneğin staging’de tarayıcıları engelleyip üretimde izin vermek) src/routes/robots.txt/+server.js endpoint’inden üretin. Her iki durumda da /_app/ paketini veya CSS’i engellemeyin — bu, oluşturan motorların sayfayı oluşturmasını bozar.
Buraya daha geniş framework veya JavaScript SEO açısından geliyorsanız, oluşturmanın “nerede ve ne zaman” gerçekleştiği mantığı JavaScript SEO’yu genel olarak yöneten mantığın aynısıdır; bu bölümdeki SvelteKit temelleri yazısı da bu makalenin üzerine kurulduğu oluşturma kiplerini ve metadata kalıplarını kapsar.
AI özeti
Gelişmiş sürümün yoğunlaştırılmış özeti:
- Adapter, neyi değil, nerede ve ne zaman olduğunu değiştirir. Adapter’lar “take the built app as input and generate output for deployment” — aynı içerik, farklı zamanlama (derleme ve istek zamanı) ve konum (origin ve edge) sunar.
- Neden SEO kararıdır: TTFB → LCP → tarama kapasitesi. Google: site “responds quickly… the limit goes up… If the site slows down… Google crawls less.” SvelteKit’i özel olarak adlandıran Google kılavuzu yoktur — bu, genel kılavuzun SvelteKit mekaniklerine uygulanmasıdır.
- Adapter’lar:
adapter-auto(sıfır yapılandırma, seçenek yok);adapter-static(SSG, içerik siteleri, en düşük TTFB);adapter-node(kontrol ettiğiniz sunucu, tüm Node API’leri);adapter-vercel(serverless + edge + ISR);adapter-cloudflare(küresel edge Workers,fsyok;adapter-cloudflare-workerskullanımdan kaldırıldı);adapter-netlify(fonksiyonlar veya Deno Edge Functions). - Prerender:
truestatik HTML oluşturur ve rotayı dinamik manifestten çıkarır;falseher zaman SSR kullanır;'auto'prerender eder ve rotayı dinamik tutar —/blog/[slug]için karma site aracıdır (popülerleri prerender edin, uzun kuyruğu SSR ile oluşturun). - Dinamik rotalar bir
entriesfonksiyonu ister, yoksa “marked as prerenderable, but were not prerendered” hatasıyla karşılaşırsınız. - Edge kısıtları:
runtime: 'edge'rota başınadır (Vercel);fsyoktur (“You can’t use fs in Cloudflare Workers” / edge functions) —$app/serveriçindekiread()’i kullanın veya prerender edin; soğuk başlangıçlar edge’i sıcak sunucudan veya statik dosyadan yavaşlatabilir. - Yerleşik sitemap/robots.txt yok.
sitemap.xml/+server.jsendpoint’i kurun (adapter-staticüzerindeprerender = true; sunucu/edge adapter’larında dinamik). robots.txt’yistatic/üzerinden veya endpoint olarak üretin. - ISR ≠ prerender-plus: “Using ISR on a route with export const prerender = true will have no effect.” Bunlar alternatiftir.
Resmî belgeler
SvelteKit’ten ve arama motorlarından birincil kaynak belgeleri.
SvelteKit
- Adapters • SvelteKit Docs — adapter’ların derlenen uygulamayı alıp dağıtım çıktısı üretmesine genel bakış.
- Zero-config deployments (adapter-auto) • SvelteKit Docs — platform başına algılama ve “does not take any options” kısıtlaması.
- Node servers (adapter-node) • SvelteKit Docs — bağımsız Node sunucusu, ortam değişkenleri ve zarif kapanma.
- Static site generation (adapter-static) • SvelteKit Docs — tam site SSG’si, SSR gerekliliği ve SPA-fallback SEO uyarısı.
- Vercel (adapter-vercel) • SvelteKit Docs — rota başına
runtime,regions,splitve Incremental Static Regeneration. - Cloudflare (adapter-cloudflare) • SvelteKit Docs — Workers/Pages,
platform.envbinding’leri,nodejs_compatvefskısıtlaması. - Cloudflare Workers (adapter-cloudflare-workers, deprecated) • SvelteKit Docs — kullanımdan kaldırılmış eski adapter ve geçiş yolu.
- Netlify (adapter-netlify) • SvelteKit Docs — Node Functions ve Deno tabanlı Edge Functions (
edge: true) ile Forms prerender gerekliliği. - Page options (prerender, ssr, csr, config) • SvelteKit Docs —
prerender = true/false/'auto',entriesfonksiyonu veconfigdahil rota başınaruntime: 'edge'.
- Understand JavaScript SEO Basics — oluşturma kuyruğu ve “not all bots can run JavaScript”.
- Optimize your crawl budget — yanıt hızına bağlı tarama kapasitesi; “make your pages efficient to load.”
Bing / Microsoft
- bingbot Series: JavaScript, Dynamic Rendering, and Cloaking. Oh My! — Bing’in prerender/dinamik oluşturma önerisi ve cloaking açıklaması.
- Fast Front-End Performance for Microsoft Bing — Bing’in kendi SSR + CDN/edge-node mimarisi, gerçek dünya kanıtı olarak.
Kaynaktan alıntılar
SvelteKit belgelerinden, Google’dan ve Bing’den kayda geçmiş ifadeler. Her bağlantı, kaynak sayfasındaki alıntılanan bölüme atlayan derin bir bağlantıdır.
SvelteKit belgeleri — adapter’lar ve sayfa seçenekleri
- “adapter-auto does not take any options.” — sıfır yapılandırmalı varsayılan adapter hakkında. Jump to quote
prerender = truehakkında — prerender edilmiş rotalar “excluded from manifests used for dynamic SSR, making your server (or serverless/edge functions) smaller.” Jump to quote'auto'hakkında — en yeni/popüler içeriği prerender etmek, uzun kuyruğu sunucuda oluşturmak istediğiniz/blog/[slug]durumu: “prerender your most recent/popular content but server-render the long tail.” Jump to quote- Edge
fskısıtlaması hakkında — “You can’t use fs in Cloudflare Workers.” Jump to quote - Vercel ISR ve prerender hakkında — “Using ISR on a route with export const prerender = true will have no effect, since the route is prerendered at build time.” Jump to quote
Google — oluşturma ve crawl budget
- “Keep in mind that server-side or pre-rendering is still a great idea because it makes your website faster for users and crawlers, and not all bots can run JavaScript.” (Türkçesi: Sunucu tarafı oluşturmanın veya prerendering’in hâlâ iyi bir fikir olduğunu unutmayın; çünkü sitenizi kullanıcılar ve tarayıcılar için hızlandırır ve tüm botlar JavaScript çalıştıramaz.) Jump to quote
- “If the site responds quickly for a while, the limit goes up, meaning more connections can be used to crawl. If the site slows down or responds with server errors, the limit goes down and Google crawls less.” (Türkçesi: Site bir süre hızlı yanıt verirse sınır yükselir ve tarama için daha fazla bağlantı kullanılabilir; site yavaşlar veya sunucu hataları döndürürse sınır düşer ve Google daha az tarar.) Jump to quote
- “Make your pages efficient to load. If Google can load and render your pages faster, we might be able to read more content from your site.” (Türkçesi: Sayfalarınızın verimli yüklenmesini sağlayın; Google sayfalarınızı daha hızlı yükleyip oluşturabilirse sitenizden daha fazla içerik okuyabiliriz.) Jump to quote
Bing — prerender ve kendi edge mimarisi
- “We encourage detecting our bingbot user agent, prerendering the content on the server side and outputting static HTML for such sites…” — Fabrice Canel ve Frédéric Dubut, Microsoft Bing. (Türkçesi: Bingbot kullanıcı aracısını algılamanızı, içeriği sunucu tarafında prerender etmenizi ve bu tür siteler için statik HTML çıkarmanızı öneriyoruz; kaynak bağlantısının metni: “we recommend dynamic rendering as a great alternative”.) Jump to quote
- “User traffic routes first to the closest CDN node (called an ‘edge node’).” — Bing Search Quality Insights, Bing’in kendi SSR + edge mimarisi hakkında. Jump to quote
SvelteKit dağıtım SEO kontrol listesi
Adapter, prerender ve sitemap kurulumunuzun tarayıcılara zarar vermeyeceğini doğrulamak için bir geçiş:
- Herhangi bir yapılandırmaya (edge, ISR, binding’ler) ihtiyacınız varsa
adapter-auto’dan açık bir adapter’a geçtiniz. - Adapter site türüyle eşleşiyor — saf içerik için
adapter-static, istek başına mantık kullanan her şey için sunucu/edge adapter’ı. - İçerik rotaları
prerender = true(veya'auto'); yalnızca gerçekten dinamik rotalar SSR’a bırakıldı. - Karma dinamik rotalar (
/blog/[slug]), bilinen yolları listeleyen birprerender = 'auto'fonksiyonuylaentrieskullanıyor. - Çözülmemiş “marked as prerenderable, but were not prerendered” derleme hatası yok.
- Herhangi bir rota
runtime: 'edge'kullanıyorsa Nodefsçağırmıyor — dosya erişimi$app/serveriçindekiread()ile veya prerender edilerek yapılıyor. - Edge/serverless üzerindeki soğuk başlangıçları hesaba kattınız — TTFB’nin önemli olduğu yerde önbelleklenebilir, statik veya sıcak.
- Bir sitemap.xml endpoint’i var (
prerender = trueüzerindeadapter-static; sunucu/edge adapter’larında dinamik). - Bir robots.txt var (
static/içinde veya+server.jsendpoint’i olarak) ve/_app/’yi veya CSS’i engellemiyor. - ISR’ı
prerender = truerotasına eklemeye çalışmıyorsunuz (etkisi yoktur). - GSC URL Inspection ve PageSpeed Insights’ta oluşturulmuş HTML’yi ve yanıt hızını doğruladınız.
Zihinsel modeller
1. Ne ve ne zaman değil, nerede ve ne zaman. Adapter içeriğinizi asla değiştirmez — HTML’nin ne zaman (derleme zamanı veya istek zamanı) ve nerede (origin veya edge) oluşturulduğunu değiştirir. Her dağıtım SEO sorusu bu iki eksene indirgenir. Yapılandırmaya dokunmadan önce bunları sorun.
2. Prerender bir rotayı sunucudan çıkarır.
prerender = true yalnızca “statik yap” değildir — rotayı dinamik manifestten çıkarır. Bu, fonksiyonunuzu küçültür ve dinamik geri dönüşü engeller. İstisna 'auto'’dur: prerender edilir ve yine manifestte kalır.
3. /blog/[slug] ayrımı.
Gerçek içerik siteleri için varsayılan desen: adlandırabildiğiniz girdileri (entries fonksiyonu yakın tarihli/popüler olanları döndürür) prerender edin, uzun kuyruğu SSR ile oluşturun. 'auto', ikisini aynı anda doğru yapan anahtardır.
4. Edge bir yükseltme değil, ödündür.
Edge size coğrafi yakınlık (sıcakken düşük TTFB) kazandırır; karşılığında Node API’lerini (fs yok) ve soğuk başlangıç riskini getirir. Sıcak bir Node sunucusunu yalnızca bazen geçer ve TTFB’de prerender edilmiş statik çıktıya her zaman yenilir. Varsayılan olarak değil, bir nedeniniz olduğu için seçin.
5. Sitemap adapter’ı izler.
“Statik mi dinamik sitemap mi?” ayrı bir karar değildir. adapter-static → prerender edilmiş sitemap, yalnızca derlemede güncel. Sunucu/edge adapter’ı → istekte sitemap, her zaman güncel. Soruyu adapter zaten yanıtlamıştır.
6. Bu iki dosyayı hiçbir şey oluşturmaz. SvelteKit hiçbir adapter için sitemap.xml veya robots.txt oluşturmaz. Bunları yazmadıysanız yoktur. Bunu yayına çıkış kontrol listenize ekleyin.
Hangi adapter + prerender birleşimini seçmeliyim?
SvelteKit dağıtımında “hangi yolu seçmeliyim?” sorusunun özü, bu sitenin nasıl yayınlanması gerektiğidir. Sitenizi şu akıştan geçirin:
1. Herhangi bir sayfada istek başına sunucu mantığı gerekiyor mu — auth, kişiselleştirme, canlı arama, form işleme, kullanıcıya özel veri? → Hayır (her sayfa her ziyaretçi için aynı): 2. adıma geçin. → Evet: 3. adıma atlayın.
2. Saf içerik sitesi (blog, dokümantasyon, pazarlama).
→ adapter-static kullanın, site genelinde (veya kök layout’ta) prerender = true ayarlayın. Prerender edilmiş bir sitemap.xml/+server.js (prerender = true) ve static/robots.txt ekleyin. En düşük TTFB, soğuk başlangıç yok, çalıştıracak sunucu yok. Burada durun.
3. Sitenin tamamı mı dinamik, yoksa yalnızca bazı rotalar mı? → Yalnızca bazı rotalar (çoğunlukla içerik, birkaç dinamik parça): 4. adıma geçin. → Çoğunlukla/tamamen dinamik (uygulama, kontrol paneli, kullanıcı verili e-ticaret): 5. adıma geçin.
4. Dinamik küçük bölümleri olan içerik sitesi.
→ Bir sunucu/edge adapter’ı (adapter-node, **-vercel veya -cloudflare) kullanın. İçerik rotalarını prerender = true, dinamik rotaları false yapın. Bilinen popüler içerikli /blog/[slug] rotalarında prerender = 'auto' + bir entries fonksiyonu kullanın. Sitemap’i CMS’nizden dinamik üretin. Tamamlandı.
5. Uygulama / kontrol paneli / e-ticaret (SSR öncelikli). Şimdi SSR’ın nerede çalışacağını seçin:
→ Öngörülebilir gecikme, Node kütüphaneleri, mevcut altyapı: adapter-node (sıcak sunucu, tüm Node API’leri, soğuk başlangıç sürprizi yok).
→ Küresel kitle, TTFB en önemli konu, ağır Node bağımlılığı yok: bir edge adapter’ı (adapter-cloudflare veya rota başına adapter-vercel ile runtime: 'edge') — fs kullanmayın ($app/server içindeki read()’i kullanın veya prerender edin) ve soğuk başlangıçları kabul edin. Yalnızca gerçekten statik kabuğu (pazarlama, giriş) prerender edin.
Dördüncü yol (yalnızca Vercel): Bir rota “çoğunlukla statik ama arada değişiyorsa”, isr: { expiration } yerine ISR’ı (prerender = true) düşünün — ikisini asla birlikte kullanmayın, çünkü “ISR on a route with export const prerender = true will have no effect.”
Sitemap’im statik mi, dinamik mi olmalı?
adapter-static üzerinde mi? → Statik/prerender edilmiş sitemap endpoint’i (prerender = true). Derleme sırasında gömülür; yayınladığınızda yeniden derlenen siteler için uygundur.
Node/serverless/edge adapter üzerinde mi? → CMS’nizden/DB’nizden her istekte üretilen dinamik sitemap — her zaman güncel, yeniden derleme yok. (Edge’de URL’leri diskten fs okuyarak değil, API veya binding üzerinden alın.)
Asla: “sayfaların hepsi statik” diye sitemap olmadan yayınlamayın. Statik çıktı ile sitemap keşfedilebilirliği birbirinden bağımsızdır — SvelteKit hiçbir adapter için iki dosyayı da üretmez.
SvelteKit dağıtım SEO’su — kısa başvuru
Adapter’lara hızlı bakış
| Adapter | Oluşturma zamanı | Runtime | SEO notu |
|---|---|---|---|
adapter-static | Derleme zamanı (SSG) | yok | En düşük TTFB, soğuk başlangıç yok; içerik siteleri |
adapter-node | İstek zamanı (SSR) | Node | Tüm Node API’leri (fs ✅); sunucuyu siz çalıştırırsınız |
adapter-vercel | İstek zamanı | serverless / edge | Rota başına runtime, regions, ISR |
adapter-cloudflare | İstek zamanı | V8 edge | Küresel edge; fs yok; nodejs_compat |
adapter-netlify | İstek zamanı | Node / Deno edge | Deno Edge Functions için edge: true |
adapter-auto | (yukarıdakileri algılar) | — | Seçenek almaz — yalnızca iskelettir |
Prerender değerleri
| Değer | Statik HTML mi? | Dinamik manifestte mi? | Şunun için kullanın |
|---|---|---|---|
true | ✅ | ❌ (çıkarıldı) | Bilinen statik içerik rotaları |
false | ❌ | ✅ | Gerçekten dinamik rotalar |
'auto' | ✅ | ✅ | /blog/[slug] — popülerleri prerender, uzun kuyruğu SSR |
Hızlı kurallar
- Dinamik prerender rotaları → bir
entriesfonksiyonu ekleyin (veya “not prerendered” hatası alırsınız). runtime: 'edge'rota başınadır (Vercel) — edge ve Node rotalarını karıştırın.- Edge =
fsyok →$app/serveriçindekiread()’i kullanın veya prerender edin. - Soğuk başlangıçlar, ilk istekte edge’i sıcak sunucudan / statik dosyadan daha yavaş yapar.
- ISR ≠ prerender —
isrrotasındakiprerender = truehiçbir şey yapmaz. - Otomatik sitemap/robots.txt yok — ikisini de oluşturun.
prerender = true’te sitemap endpoint’indeadapter-static; sunucu/edge’de dinamik. - robots.txt’de
/_app/’yi veya CSS’i asla engellemeyin.
Bir prerender rotası dağıtımda eksik
Olası neden: Tarayıcı yolu keşfedemedi, bir entries değeri eksik veya prerender başarısız oldu. Çözüm: taranabilir bağlantılar veya açık girdiler ekleyin ve derleme uyarılarını sürüm engeli kabul edin. Doğrulama: çıktı manifesti rotayı içeriyor ve üretim eksiksiz HTML döndürüyor.
adapter-static dinamik rotada başarısız
Olası neden: Rota derleme zamanında tamamen listelenemiyor. Çözüm: sonlu girdiler sağlayın, rotayı yeniden tasarlayın veya o yol için sunucu özellikli bir adapter kullanın. Doğrulama: seçilen adapter derleniyor ve her temsili rota amaçlanan yanıtı döndürüyor.
Edge dağıtımı dosya sistemi veya Node API hataları veriyor
Olası neden: Rota kodu veya bir bağımlılık edge runtime’ında bulunmayan Node özelliklerini varsayıyor. Çözüm: bağımlılığı değiştirin, işi uyumlu bir hizmete taşıyın veya Node adapter’ı seçin. Doğrulama: üretim SSR’ı runtime istisnası olmadan başarılı.
Sitemap veya robots.txt HTML döndürüyor
Olası neden: Bir fallback rota endpoint’i yakalıyor veya +server handler’ı yanlış gövde/başlık ayarlıyor. Çözüm: doğru içerik türleriyle açık endpoint handler’ları oluşturun. Doğrulama: doğrudan istekler beklenen metin/XML yanıtını ve 200 durumunu döndürüyor.
Metadata prerender edilmiş ve SSR rotaları arasında farklı
Olası neden: head verisi farklı kod yollarında yükleniyor veya tarayıcı durumuna bağlı. Çözüm: metadata üretimini sunucuda/derlemede güvenli sayfa verilerinden merkezileştirin. Doğrulama: her iki rota türünün ham HTML’si eşdeğer title, canonical ve robots mantığını içeriyor.
Adapter’ınızın gerçekte ne dağıttığını doğrulayın
Adapter ve prerender seçmenin amacı, tarayıcının hızlı ve eksiksiz HTML almasıdır. Bu kontroller, tarayıcıdan değil ham yanıttan bunun gerçekten gerçekleştiğini doğrular.
Sayfa prerender edildi mi / SSR ile mi sunuldu (içerik ham HTML’de mi)?
Düz bir curl JavaScript çalıştırmaz; bu yüzden oluşturma yapmayan bir tarayıcının gördüğü şeyi birebir görür.
macOS / Linux
# Raw HTML as the host sends it (no JS executed)
curl -sL "https://example.com/your-page/" -o raw.html
grep -o "Your unique headline text" raw.html # empty = CSR shell, not prerenderedWindows (PowerShell)
Invoke-WebRequest -Uri "https://example.com/your-page/" -OutFile raw.html
Select-String -Path raw.html -Pattern "Your unique headline text"TTFB hızlı mı (yoksa fonksiyon soğuk mu başlıyor)?
TTFB, LCP’yi ve tarama kapasitesini etkiler; bu yüzden ölçün. URL’ye önce soğuk, sonra sıcak istek gönderin:
# Time to first byte, twice — a big first number then a small one = cold start
for i in 1 2; do
curl -s -o /dev/null -w "TTFB: %{time_starttransfer}s\n" "https://example.com/your-page/"
donePrerender edilmiş/statik sayfa sürekli düşük değer vermelidir. İlk değerin büyük olup ikinci istekte düşmesi, klasik serverless/edge soğuk başlangıcıdır.
Bu rota prerender mı edildi, yoksa dinamik mi sunuldu?
Statik hostlar ve CDN’ler bunu genellikle başlıklarda gösterir (cache durumu, age, x-vercel-cache, cf-cache-status):
curl -sI "https://example.com/your-page/" | grep -iE "cache|age|x-vercel|cf-"Bir HIT (veya sıfırdan büyük bir age), önbelleğe alınmış/prerender edilmiş içerik sunulduğu anlamına gelir; her istekte MISS/DYNAMIC, isteğe göre oluşturulduğu anlamına gelir.
Sitemap gerçekten var mı ve XML döndürüyor mu?
SvelteKit bir sitemap oluşturmadığı için, doğru içerik türüyle gerçekten var olduğunu doğrulayın:
curl -sI "https://example.com/sitemap.xml" | grep -iE "HTTP/|content-type"
# Want: 200 + content-type: application/xml (not text/html or a 404)DevTools konsolu tek satırlık komut
Tarayıcı konsoluna yapıştırarak oluşturulmuş DOM’u tarayıcının ihtiyaç duyduğu şeyle karşılaştırın — başlığınız burada olup yukarıdaki curl çıktısında yoksa, istemci tarafında oluşturuluyordur:
// Is the content in the DOM, and does the sitemap resolve?
console.log('headline in DOM:', document.body.innerText.includes('Your unique headline text'));
fetch('/sitemap.xml').then(r => console.log('sitemap status:', r.status, r.headers.get('content-type')));robots.txt paketlemeyi engellemiyor mu kontrol edin
curl -sL "https://example.com/robots.txt" | grep -iE "disallow.*(/_app|\.js|\.css)"Disallow (SvelteKit’in paketlenmiş çıktısı) veya CSS ile eşleşen bir /_app/, motorların sayfayı oluşturmasını engeller — neredeyse her zaman hatadır.
SvelteKit dağıtım SEO’su için hata ayıklama araçları
- URL Inspection (Google Search Console) — doğruluk kaynağıdır. Bir URL’yi canlı test edin; içeriğin ve metadata’nın mevcut olduğunu ve hiçbir şeyin engellenmediğini doğrulamak için oluşturulmuş HTML’yi, ekran görüntüsünü ve sayfa kaynaklarını kontrol edin.
- PageSpeed Insights — SvelteKit belgelerinin kendi önerdiği araç; adapter seçiminin en çok etkilediği TTFB ve Core Web Vitals’ı (LCP/INP/CLS) gösterir.
- WebPageTest — edge/serverless dağıtımlarında TTFB ve soğuk başlangıç zamanlamasını teşhis etmek için waterfall + filmstrip.
curl -w "%{time_starttransfer}"— en hızlı ham TTFB ve soğuk başlangıç kontrolü (Scripts sekmesine bakın).- Host kontrol panelleri (Vercel / Cloudflare / Netlify Analytics) — rota başına fonksiyon çağrı sayıları, soğuk başlangıç oranları ve cache-hit oranları; edge/serverless’ın sizin için gerçekten hızlı olup olmadığına dair gerçek kaynak.
- Screaming Frog SEO Spider — ham ve oluşturulmuş HTML’yi site genelinde karşılaştırmak ve prerender edilmiş rotaların eksiksiz olduğunu doğrulamak için JS oluşturma açık/kapalı tarayın.
- Ahrefs Site Audit — eksik/engellenmiş sitemap’leri, yönlendirme zincirlerini, bozuk canonical’ları ve büyük ölçekte dizine eklenebilirlik sorunlarını gösterir.
Kendinizi test edin: SvelteKit Dağıtım SEO’su
SvelteKit’te adapter’lar, prerendering ve edge oluşturma hakkında beş kısa soru. Her biri için bir yanıt seçin, sonra kontrol edin.
Zaman ayırmaya değer kaynaklar
İlgili yazılarım
- JavaScript SEO: A Definitive Guide — her adapter kararının temelini oluşturan oluşturma kipleri (SSR, statik oluşturma, prerendering ve CSR tuzakları) hakkındaki kapsamlı başvurum. Orada söylediğim gibi, her türlü SSR, statik oluşturma veya prerendering kurulumu arama motorları için yeterlidir — bu adapter tercihlerinin arkasındaki güvenlik ağı tam olarak budur.
- The Beginner’s Guide to Technical SEO — oluşturma, tarama ve Core Web Vitals’ın büyük resimdeki yeri.
Konuşmalarım
- How Search Works (SlideShare) — tarama, oluşturma, dizine ekleme ve sıralama hakkındaki anlatımım; TTFB’nin ve oluşturma zamanlamasının neden önemli olduğunun arka planı. (Sürekli geçerli uyarım: “This is my understanding of systems… not going to be 100% complete or accurate.”)
Sektörün farklı yerlerinden
- Adapters • SvelteKit Docs — her resmî adapter’ın ve
svelte.config.jsiçinde nasıl belirtildiğinin yetkili özeti. - Page options (prerender, ssr, csr, config) • SvelteKit Docs — rota başına
prerenderdeğerleri,entriesfonksiyonu ve ekip tarafından açıklananconfigdahil rota başınaruntime: 'edge'. - Vercel (adapter-vercel) • SvelteKit Docs — edge runtime, bölgeler ve ISR-prerender uyarısı.
- Cloudflare (adapter-cloudflare) • SvelteKit Docs — Workers/Pages dağıtımı, binding’ler ve
fskısıtlaması. - SvelteKit • Cloudflare Pages docs — Cloudflare tarafındaki dağıtım mekanikleri ve
platformbinding’leri. - SvelteKit SEO: Your Secret Weapon (Okupter) — prerendering, meta etiketleri ve
+server.jssitemap/RSS kalıbı için uygulamacı rehberi. - A Deep Dive into SvelteKit’s Rendering Techniques (This Dot Labs) — SSR/SSG/CSR mekanikleri ve rota/layout başına yapılandırma; “SSR can be expensive” sunucu yükü ödünüyle birlikte.
- Understand JavaScript SEO Basics (Google Search Central) — oluşturma kuyruğu ve “not all bots can run JavaScript”; her adapter seçiminin dayandığı genel kılavuz.
Değişiklik günlüğü
8 Ağu 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.
8 Ağu 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.