आपने नए अनुवाद publish किए लेकिन ऐप अभी भी पुराने दिखा रहा है। यह लगभग हमेशा एक cache समस्या होती है — यहाँ बताया गया है कि इसे कैसे diagnose और solve करें।
Cache layers को समझना
जब आप publish करते हैं, तो उपयोगकर्ता तक पहुँचने से पहले अनुवाद कई cache layers से गुजरते हैं:
आप publish करते हैं
→ CDN origin अपडेट होता है (तुरंत)
→ CDN edge cache purge होता है (तुरंत)
→ SDK in-memory cache expire होता है (60 सेकंड तक)
→ Browser/framework cache expire होता है (60 सेकंड तक)
→ उपयोगकर्ता नए अनुवाद देखता है
अधिकतर setups में publish से उपयोगकर्ता तक अधिकतम delay लगभग 60 सेकंड होती है।
त्वरित समाधान
1. 60 सेकंड प्रतीक्षा करें और hard-refresh करें
सबसे सरल उपाय: एक मिनट प्रतीक्षा करें, फिर browser cache को bypass करने के लिए Cmd+Shift+R (Mac) या Ctrl+Shift+R (Windows) दबाएँ।
2. CDN के पास fresh data है यह verify करें
curl -I https://cdn.better-i18n.com/your-org/your-project/en/translations.json
Age header जाँचें — अगर 0 या बहुत कम है, तो CDN के पास fresh data है। x-cache-status header HIT या MISS दिखाता है।
3. SDK cache साफ़ करें (development)
अगर आप development में हैं और changes तुरंत देखना चाहते हैं, तो dev server restart करके SDK के TtlCache को bypass किया जा सकता है।
Framework-specific व्यवहार
Next.js (ISR)
Next.js ISR अपनी cache layer जोड़ता है। Default messagesRevalidateSeconds: 30 के साथ, Next.js को CDN से re-fetch करने में 30 सेकंड तक लग सकते हैं।
Development में तुरंत refresh के लिए:
- Dev server restart करें, या
- ISR cache bypass करने के लिए
?_vercel_no_cache=1जोड़ें
Production में: ISR stale-while-revalidate basis पर काम करता है। 30 सेकंड बाद पहला request background revalidation trigger करता है। अगला request fresh data पाता है।
React SPA / TanStack
SDK का TtlCache 60 सेकंड TTL वाला है। 60 सेकंड बाद अगला render cycle fresh translations fetch करता है।
Expo / React Native
Mobile apps भी 60 सेकंड TTL उपयोग करते हैं। ऐप को पूरी तरह बंद करके दोबारा खोलने से fresh fetch trigger होता है। अगर persistent storage enabled है, तो SDK हर successful CDN fetch पर storage में fresh data लिखता है।
Remix / Hydrogen
Loader-based fetching का मतलब है कि हर server request fresh data पा सकता है। SDK का TtlCache मुख्य cache layer है (60 सेकंड)।
Purge verification
Publish करने पर platform स्वतः CDN cache purge करता है। अगर आपको लगता है purge नहीं हुआ (दुर्लभ):
- CDN से सीधे translations fetch करें
- Response body में अपने नए translation values जाँचें
- Stale होने पर 60 सेकंड प्रतीक्षा करें (CDN
max-age: 60स्वाभाविक रूप से expire हो जाएगा)
नोट: CDN errors के दौरान भी हमेशा HTTP 200 return करने के लिए designed है। अगर
{}या{ "fallback": true }दिखता है, तो इसका मतलब अनुवाद अभी publish नहीं हुए हैं (cache समस्या नहीं)।
कब चिंता करें
5 मिनट के बाद भी translations stale हैं तो:
- Dashboard जाँचें — क्या publish वास्तव में पूरा हुआ?
curlसे CDN URL सीधे verify करें- अपना project ID बिल्कुल match करता है जाँचें (case-sensitive)
- Diagnostic info के लिए
better-i18n doctorचलाएँ