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.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 ?