Performans ve SEO dengesini kuralım.
Modern web uygulamalarında en kritik karar: sayfa statik mi render edilecek, yoksa dinamik mi?
Nuxt 3 bu soruna zarif bir çözüm sunuyor: Route Rules (yönlendirme kuralları).
Her sayfa veya API için özel SSR, prerender, cache veya edge davranışları tanımlayabilirsin. 😌
Bu yazıda Nuxt 3’ün routeRules sistemini derinlemesine inceliyoruz -- hem performansı hem de SEO’yu optimize eden cache stratejileriyle birlikte.
routeRules Nedir?
Nuxt 3,nuxt.config.ts içinde her route’a özel kurallar tanımlamana izin verir. Bu kurallar, sayfa oluşturma stratejisini belirler: SSG, SSR, SPA veya Edge Rendering.// nuxt.config.ts
export default defineNuxtConfig({
routeRules: {
'/': { prerender: true }, // statik anasayfa
'/blog/**': { swr: 60 }, // 60 sn cache
'/dashboard/**': { ssr: true, cache: false }, // dinamik alan
'/api/**': { cors: true, cache: { maxAge: 300 } } // API için özel cache
}
})
Her route kendi davranışına sahip olabilir. Artık tek tip render zorunluluğu yok.
Özet: routeRules = "Her route’un kendi kaderi olsun."
Önemli Kuralların Anlamı
| Kural | Açıklama |
|---|---|
ssr | Sayfa sunucu tarafında mı render edilecek? |
prerender | Build sırasında statik olarak oluşturulsun mu? |
swr | (Stale While Revalidate) Önbelleği güncellerken eski içeriği göster. |
cache | Cache davranışını detaylı tanımla (maxAge, staleMaxAge, vs.). |
cors | API için CORS desteği ekle. |
headers | Route bazlı HTTP header ayarları. |
SSR, SSG, SWR, ISR: Kısaltmaların Gerçek Anlamı
SSR (Server-Side Rendering)
Her istek geldiğinde sayfa yeniden render edilir.- ✅ Dinamik veriler için uygundur.
- ❌ Her istekte yük artar.
SSG (Static Site Generation)
Sayfa build sırasında oluşturulur ve CDN’den servis edilir.- ✅ Hızlı, cache dostu.
- ❌ Dinamik veriler için manuel rebuild gerekir.
SWR (Stale While Revalidate)
Sayfa önceden cache’lenir ama belirli sürede bir yenilenir.- ✅ Hız + tazelik dengesi.
- ✅ Kullanıcı eski içeriği görürken arka planda yenisi hazırlanır.
ISR (Incremental Static Regeneration)
SWR mantığının Nuxt versiyonu. Statik sayfalar kademeli olarak yeniden oluşturulur.Örnek: /blog/** için swr: 60 dersen, her 60 saniyede bir sayfa yeniden oluşturulur.
Örnek: Blog Sitesi için Akıllı Kurallar
routeRules: {
'/': { prerender: true }, // statik anasayfa
'/blog': { prerender: true }, // statik liste
'/blog/**': { swr: 120 }, // her 2 dakikada yenilenen içerik
'/admin/**': { ssr: true, cache: false } // dinamik admin panel
}
Bu yapı ile:- Anasayfa ve blog listesi build sırasında oluşturulur (hızlı açılış).
- Blog detay sayfaları arka planda düzenli olarak yenilenir (SWR).
- Admin panel ise tamamen dinamik kalır.
Cache Katmanları
Nuxt 3, cache’i üç seviyede yönetir:- Browser Cache: Tarayıcı bazlı, header üzerinden (
Cache-Control). - Server Cache: Nitro üzerinden (
cache: { maxAge }). - CDN Cache: Cloudflare, Netlify Edge, Vercel gibi platformlar.
Örnek:
'/api/posts': {
cache: {
maxAge: 300, // 5 dakika
staleMaxAge: 60 // bu sürede eski cache gösterilebilir
}
}
Bu yapı sayesinde API her istek için yeniden çalışmak zorunda kalmaz.💡 İpucu: Nitro cache sistemi hem server hem edge ortamlarında sorunsuz çalışır.
Dynamic vs Static -- Karar Matrisi
| Senaryo | Strateji |
|---|---|
| Blog sayfaları | SWR / ISR |
| Dashboard / Admin | SSR |
| Anasayfa | SSG / Prerender |
| API endpoint | Cache + SSR |
| Gerçek zamanlı veri (ör. Chat) | SSR (veya server streaming) |
Dikkat Edilmesi Gerekenler
swrkullanıyorsan, data idempotent olmalı (aynı istek aynı sonucu döndürmeli).cache’li API’lerde kullanıcı bazlı içerik (örneğin JWT token) varsa dikkat et; cache paylaşımı güvenlik riski oluşturabilir.- SSR route’larında
cache: truekullanmak, kullanıcıya yanlış veri gösterebilir.
İleri Seviye: routeRules + Nitro
Nuxt 3’ün Nitro motoru, routeRules tanımlarını edge ortamlarına (Cloudflare, Netlify, Vercel Edge Functions) otomatik taşır. Bu sayede statik ve dinamik içerikler aynı uygulamada, aynı kod tabanında birlikte yaşayabilir.routeRules: {
'/api/**': { cache: { maxAge: 60 }, headers: { 'x-powered-by': 'Nuxt Nitro' } }
}
Artık API yanıtların edge seviyesinde bile cache’lenir.Sonuç
Route Rules, Nuxt 3’ün en güçlü ama en az bilinen özelliklerinden biridir. Her sayfanın, her API’nin kendi cache ve render stratejisini tanımlayarak uygulamanı optimize edebilirsin.Kısaca:
prerender→ Statik sayfalarswr→ Güncellenen ama hızlı sayfalarssr→ Dinamik alanlarcache→ Akıllı API performansı