Yayınladım ama uygulamam hâlâ eski çevirileri gösteriyor

Yeni çeviriler yayınladınız ancak uygulamanız hâlâ eskilerini gösteriyor. Bu neredeyse her zaman bir önbellekleme sorunudur — nasıl teşhis edip çözeceğinizi öğrenin.

5 dk okuma·Orta Düzey

Yeni çeviriler yayınladınız ama uygulamanız hâlâ eskileri gösteriyor. Bu neredeyse her zaman bir önbellekleme sorunudur — işte nasıl teşhis edip çözeceğiniz.

Önbellek katmanlarını anlama

Yayınladığınızda, çeviriler kullanıcıya ulaşmadan önce birkaç önbellek katmanından geçer:

Siz yayınlarsınız
  → CDN origin güncellenir (anlık)
  → CDN edge cache temizlenir (anlık)
  → SDK bellek içi cache sona erer (60 saniyeye kadar)
  → Tarayıcı/framework cache sona erer (60 saniyeye kadar)
  → Kullanıcı yeni çevirileri görür

Çoğu kurulumda yayınlamadan kullanıcıya ulaşmaya kadar maksimum gecikme yaklaşık 60 saniyedir.

Hızlı çözümler

1. 60 saniye bekleyin ve sayfayı sıfırlayın

En basit çözüm: bir dakika bekleyin, ardından tarayıcı önbelleğini atlatmak için Cmd+Shift+R (Mac) veya Ctrl+Shift+R (Windows) tuşlarına basın.

2. CDN'nin güncel veriye sahip olduğunu doğrulayın

curl -I https://cdn.better-i18n.com/your-org/your-project/en/translations.json

Age başlığını kontrol edin — 0 veya çok düşükse CDN'nin güncel verisi vardır. x-cache-status başlığı HIT veya MISS gösterir.

3. SDK cache'ini temizleyin (geliştirme ortamı)

Geliştirme sırasında değişiklikleri hemen görmek istiyorsanız, SDK'nın TtlCache'ini geliştirme sunucunuzu yeniden başlatarak atlayabilirsiniz.

Framework'e özgü davranış

Next.js (ISR)

Next.js ISR kendi önbellek katmanını ekler. Varsayılan messagesRevalidateSeconds: 30 ile Next.js'in CDN'den yeniden fetch etmesi 30 saniyeye kadar sürebilir.

Geliştirmede anında yenileme için:

  • Geliştirme sunucusunu yeniden başlatın, ya da
  • ISR cache'ini atlatmak için ?_vercel_no_cache=1 ekleyin

Prodüksiyonda: ISR, stale-while-revalidate temelinde çalışır. 30 saniye sonraki ilk istek arka planda yenilemeyi tetikler. Sonraki istek güncel veriyi alır.

React SPA / TanStack

SDK'nın TtlCache'i 60 saniyelik TTL'ye sahiptir. 60 saniye sonra bir sonraki render döngüsü güncel çevirileri fetch eder.

Expo / React Native

Mobil uygulamalar da 60 saniyelik TTL kullanır. Uygulamayı tamamen kapatıp yeniden açmak güncel bir fetch tetikler. Kalıcı depolama etkinleştirdiyseniz SDK, her başarılı CDN fetch'inde güncel veriyi depolamaya yazar.

Remix / Hydrogen

Loader tabanlı fetch, her sunucu isteğinin güncel veri alabilmesi anlamına gelir. SDK'nın TtlCache'i ana önbellek katmanıdır (60 saniye).

Temizleme doğrulaması

Yayınladığınızda platform otomatik olarak CDN cache'ini temizler. Temizlemenin çalışmadığından şüpheleniyorsanız (nadir):

  1. CDN'den çevirileri doğrudan fetch edin
  2. Yanıt gövdesinde yeni çeviri değerlerinizi kontrol edin
  3. Eski veriyse 60 saniye bekleyin (CDN max-age: 60 doğal olarak sona erecektir)

Not: CDN, hatalar sırasında bile her zaman HTTP 200 döndürmek üzere tasarlanmıştır. {} veya { "fallback": true } görüyorsanız, bu çevirilerin henüz yayınlanmadığı anlamına gelir (önbellek sorunu değil).

Ne zaman endişelenmelisiniz?

5 dakika sonra çeviriler hâlâ eskiyse:

  1. Dashboard'u kontrol edin — yayınlama gerçekten tamamlandı mı?
  2. CDN URL'sini curl ile doğrudan doğrulayın
  3. Proje ID'nizin tam olarak eşleştiğini kontrol edin (büyük/küçük harf duyarlı)
  4. Tanı bilgisi için better-i18n doctor çalıştırın

Sonraki adımlar