Ağ geçidi
CDN ve kenar önbelleği
Statik dosyaları kullanıcıya en yakın noktadan sunmak ve neyin önbelleğe alınmaması gerektiğini bilmek.
Kavramı anlayalım
CDN (İçerik Dağıtım Ağı), dünyaya yayılmış sunuculardan oluşur. Kullanıcı bir dosya istediğinde en yakın uç noktası yanıt verir; dosya orada yoksa kaynağa (origin) gider, alır ve sonraki istekler için saklar. Mesafe kısaldığı için gecikme azalır, kaynak sunucunun yükü düşer.
Ne kadar süre saklanacağını Cache-Control başlığı belirler. Next.js derleme çıktısındaki JavaScript ve CSS dosyalarının adlarında içerik özeti (hash) bulunur; içerik değişince ad da değişir. Bu yüzden bu dosyalar ‘immutable’ olarak bir yıl saklanabilir. HTML ise kullanıcıya göre değişebileceği ve güncel kalması gerektiği için genellikle kısa süreli veya hiç saklanmaz.
En tehlikeli hata, kişiye özel bir yanıtı paylaşılan önbelleğe koymaktır. ‘private’ yönergesi yanıtın yalnız tarayıcıda saklanmasını, ‘no-store’ hiç saklanmamasını söyler. Oturum çerezine göre değişen bir sayfanın ‘public’ olarak önbelleklenmesi, bir kullanıcının verisinin başka kullanıcılara gösterilmesine yol açabilir.
Doğru önbellek başlıkları hem hızı hem de veri gizliliğini belirler.
Oturuma göre değişen bir yanıtı Cache-Control: public ile göndermek.
Aynı konu. Üç farklı derinlik.
/_next/static/chunks/main-3f9a1c.js
Cache-Control: public, max-age=31536000, immutableAdı içerikle değişen dosya bir yıl güvenle saklanabilir.
Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.
Önce kendin dene.
Bir CSS dosyasını düzelttin ama kullanıcılar eski görünümü görmeye devam ediyor. Dosya ‘/styles.css’ adıyla ve max-age=31536000 ile sunuluyor. Sorun ve çözüm nedir?
Çözümü ve açıklamasını göster
Ad değişmediği için tarayıcı ve CDN bir yıl boyunca eski dosyayı kullanır.
Çözüm: dosya adına içerik özeti eklemek (styles.3f9a1c.css)
veya bu adı kısa max-age ile sunmak.Uzun süreli önbellek ancak içerik değişince adı da değişen dosyalar için güvenlidir.