Vous avez publié de nouvelles traductions mais votre application affiche toujours les anciennes. C'est presque toujours un problème de cache — voici comment le diagnostiquer et le résoudre.
Comprendre les couches de cache
Quand vous publiez, les traductions traversent plusieurs couches de cache avant d'atteindre l'utilisateur :
Vous publiez
→ CDN origin mis à jour (immédiat)
→ Cache edge CDN purgé (immédiat)
→ Cache en mémoire SDK expiré (jusqu'à 60s)
→ Cache navigateur/framework expiré (jusqu'à 60s)
→ L'utilisateur voit les nouvelles traductions
Le délai maximum de la publication à l'utilisateur est d'environ 60 secondes dans la plupart des configurations.
Corrections rapides
1. Attendre 60 secondes et forcer le rechargement
La solution la plus simple : attendez une minute, puis appuyez sur Cmd+Shift+R (Mac) ou Ctrl+Shift+R (Windows) pour contourner le cache du navigateur.
2. Vérifier que le CDN a des données fraîches
curl -I https://cdn.better-i18n.com/your-org/your-project/en/translations.json
Vérifiez l'en-tête Age — s'il est 0 ou très bas, le CDN a des données fraîches. L'en-tête x-cache-status indique HIT ou MISS.
3. Vider le cache SDK (développement)
Si vous êtes en développement et avez besoin de voir les changements immédiatement, le TtlCache du SDK peut être contourné en redémarrant votre serveur de développement.
Comportement spécifique par framework
Next.js (ISR)
Next.js ISR ajoute sa propre couche de cache. Avec le messagesRevalidateSeconds: 30 par défaut, il peut falloir jusqu'à 30 secondes pour que Next.js re-fetch depuis le CDN.
Pour forcer un rafraîchissement immédiat en développement :
- Redémarrez le serveur de développement, ou
- Ajoutez
?_vercel_no_cache=1pour contourner le cache ISR
En production : L'ISR fonctionne sur une base stale-while-revalidate. La première requête après 30 secondes déclenche une revalidation en arrière-plan. La prochaine requête obtient des données fraîches.
React SPA / TanStack
Le TtlCache du SDK a un TTL de 60 secondes. Après 60 secondes, le prochain cycle de rendu récupère des traductions fraîches.
Expo / React Native
Les applications mobiles utilisent également le TTL de 60s. Forcer la fermeture et rouvrir l'application déclenche un fetch frais. Si vous avez activé le stockage persistant, le SDK écrit les données fraîches dans le stockage à chaque fetch CDN réussi.
Remix / Hydrogen
Le fetch basé sur les loaders signifie que chaque requête serveur peut obtenir des données fraîches. Le TtlCache du SDK est la principale couche de cache (60s).
Vérification de la purge
Quand vous publiez, la plateforme purge automatiquement le cache CDN. Si vous suspectez que la purge n'a pas fonctionné (rare), vous pouvez vérifier :
- Récupérez les traductions directement depuis le CDN
- Vérifiez le corps de la réponse pour vos nouvelles valeurs de traduction
- Si obsolète, attendez 60 secondes (le
max-age: 60du CDN expirera naturellement)
Note : Le CDN est conçu pour toujours retourner HTTP 200, même en cas d'erreur. Si vous voyez
{}ou{ "fallback": true }, cela signifie que les traductions n'ont pas encore été publiées (pas un problème de cache).
Quand s'inquiéter
Si les traductions sont toujours obsolètes après 5 minutes :
- Vérifiez le tableau de bord — la publication s'est-elle réellement terminée ?
- Vérifiez l'URL CDN directement avec
curl - Vérifiez que votre ID de projet correspond exactement (sensible à la casse)
- Exécutez
better-i18n doctorpour des informations de diagnostic
Étapes suivantes
Cet article vous a-t-il été utile ?