J'ai publié mais mon application affiche toujours les anciennes traductions

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.

5 min de lecture·Intermédiaire

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=1 pour 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 :

  1. Récupérez les traductions directement depuis le CDN
  2. Vérifiez le corps de la réponse pour vos nouvelles valeurs de traduction
  3. Si obsolète, attendez 60 secondes (le max-age: 60 du 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 :

  1. Vérifiez le tableau de bord — la publication s'est-elle réellement terminée ?
  2. Vérifiez l'URL CDN directement avec curl
  3. Vérifiez que votre ID de projet correspond exactement (sensible à la casse)
  4. Exécutez better-i18n doctor pour des informations de diagnostic

Étapes suivantes