RFC 5861 stale-while-revalidate ve stale-if-error başlıklarıyla CDN önbelleğini optimize edin, veritabanı yığılmalarını (thundering herd) engelleyin ve sunucu kesintilerinde bile anında yanıt verin.
Dinamik HTML sayfaları (WordPress, Next.js SSR) için origin stampede önleyici hibrit model. Sayfa 15ms'de açılır, arka planda güncellenir.
# /etc/nginx/conf.d/cache.conf
# DYNAMIC_HTML Icin Cache-Control Yapilandirmasi
location / {
# 2026 RFC 5861 Uyumlu Onbellek Basligi
add_header Cache-Control "public, max-age=300, stale-while-revalidate=86400, stale-if-error=604800" always;
add_header Vary "Accept-Encoding" always;
}// Next.js App Router / Pages Router API Route
import type { NextApiRequest, NextApiResponse } from 'next';
export default function handler(req: NextApiRequest, res: NextApiResponse) {
// RFC 5861 SWR ve Stale-if-error destegi
res.setHeader('Cache-Control', 'public, max-age=300, stale-while-revalidate=86400, stale-if-error=604800');
res.setHeader('Vary', 'Accept-Encoding');
res.status(200).json({ status: 'ok', timestamp: Date.now() });
}Terminalinizde aşağıdaki komutu çalıştırarak CDN ve sunucunuzun doğru önbellek başlıklarını ve Age/HIT durumunu döndürdüğünü doğrulayın:
curl -sI https://example.com | grep -iE 'cache-control|cf-cache-status|x-cache|age'
Geleneksel önbelleklemede içerik süresi (TTL / max-age) bittiği anda gelen ilk istek (veya aynı anda gelen onlarca istek) doğrudan kaynak sunucuya (origin) düşer. Bu durum hem kullanıcı için gecikmeye (TTFB) yol açar hem de kaynak sunucuda veritabanı kilitlenmelerine (cache stampede / thundering herd) neden olabilir.
RFC 5861 standardında tanımlanan stale-while-revalidate direktifi sayesinde, içerik bayatlasa dahi CDN veya tarayıcı kullanıcıya anında bayat kopyayı iletir (0-10ms gecikme). Eş zamanlı olarak arka planda kaynak sunucuya asenkron bir istek atarak önbelleği günceller. Kullanıcı hiçbir zaman arka plandaki oluşturma süresini beklemez.
Kaynak sunucunuzda bakım olduğunda, veritabanı çöktüğünde veya Nginx 502/504 Bad Gateway hatası döndürdüğünde,stale-if-error direktifi CDN'in ziyaretçiye hata ekranı yerine önceki çalışan sayfayı sunmasını sağlar. Bu sayede sunucu tarafındaki geçici problemler son kullanıcıya yansımaz.