Vider le cache¶
Objectif : recharger les catalogues après les avoir modifiés.
Ce que vous allez apprendre : pour la performance, les catalogues sont mis en cache après leur première lecture.
Si vous éditez un fichier JSON pendant que l'application tourne, le changement n'apparaît qu'après clear_translation_cache().
Module opt-in
Le cache évite de relire le disque à chaque trans.
En contrepartie, une modification à chaud nécessite de vider le cache.
Classes Forge utilisées¶
| Fonction | Rôle dans ce starter | Référence |
|---|---|---|
clear_translation_cache() |
Vide le cache des catalogues. | Opt-ins |
Le contrôleur¶
# mvc/controllers/i18n_cache_controller.py
from core.http.request import Request
from core.http.response import Response
from core.mvc.controller.base_controller import BaseController
from forge_mvc_i18n import clear_translation_cache, trans
class I18nCacheController(BaseController):
@staticmethod
def recharger(request: Request) -> Response:
# Après avoir édité translations/fr.json sur le disque :
clear_translation_cache()
return Response.json({
"rechargé": True,
"title": trans("welcome.title", locale="fr"),
})
Comprendre ce code¶
- Sans
clear_translation_cache(),transcontinue de servir la version déjà lue du catalogue, même si le fichier a changé. - Après l'appel, la prochaine lecture relit
translations/fr.jsonà jour. - En production, on vide rarement le cache : les catalogues changent au déploiement, pas en cours de requête.
La route¶
# mvc/routes/__init__.py
from mvc.controllers.i18n_cache_controller import I18nCacheController
with router.group("", public=True) as public:
public.add("POST", "/i18n-cache/reload", I18nCacheController.recharger, name="i18n_cache_reload")
À retenir¶
- Les catalogues sont mis en cache dès la première lecture.
clear_translation_cache()force le rechargement après édition à chaud.- En production, le cache se vide au déploiement.
Après ce starter¶
Dernière étape : que faire d'un catalogue absent ou invalide ?