Cansu Arı Logo
Blog
Nasıl Yapılır?

Route Rules ve Caching Stratejileri - Static mi Dynamic mi?

Nuxt 3’te route rules, her sayfa veya API için özel cache, prerender ve SSR stratejileri tanımlamanı sağlar. Static mi dynamic mi? Performans ve SEO dengesini kuralım.

  • #Nuxt 3
  • #Vue.js

Skip to content

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ı

KuralAçıklama
ssrSayfa sunucu tarafında mı render edilecek?
prerenderBuild sırasında statik olarak oluşturulsun mu?
swr(Stale While Revalidate) Önbelleği güncellerken eski içeriği göster.
cacheCache davranışını detaylı tanımla (maxAge, staleMaxAge, vs.).
corsAPI için CORS desteği ekle.
headersRoute 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.
Sonuç: Maksimum hız + güncel içerik. 🚀

Cache Katmanları

Nuxt 3, cache’i üç seviyede yönetir:
  1. Browser Cache: Tarayıcı bazlı, header üzerinden (Cache-Control).
  2. Server Cache: Nitro üzerinden (cache: { maxAge }).
  3. 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

SenaryoStrateji
Blog sayfalarıSWR / ISR
Dashboard / AdminSSR
AnasayfaSSG / Prerender
API endpointCache + SSR
Gerçek zamanlı veri (ör. Chat)SSR (veya server streaming)

Dikkat Edilmesi Gerekenler

  • swr kullanı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: true kullanmak, 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 sayfalar
  • swr → Güncellenen ama hızlı sayfalar
  • ssr → Dinamik alanlar
  • cache → Akıllı API performansı

All tags
  • Nuxt 3
  • Vue.js