Aller au contenu principal

Cache Engine

Version : 1.0

Statut : Architecture cible

Décision : MOBILE-006


1. Objectif

Le Cache Engine constitue l'un des composants fondamentaux de DMV Mobile.

Il ne s'agit pas d'une simple optimisation de performances.

Le cache fait partie intégrante de l'architecture de la plateforme et permet :

  • d'accélérer l'ouverture de l'application ;
  • de limiter les appels réseau ;
  • d'assurer la continuité de service ;
  • de supporter le fonctionnement Offline Continuity ;
  • d'améliorer l'expérience utilisateur.

Le Cache Engine ne doit jamais devenir une base de données parallèle.

État actuel

Le code existant ne présente pas encore un Cache Engine mobile centralisé. Il existe plutôt plusieurs mécanismes de cache indépendants :

  • caches applicatifs front, notamment autour de SWR ;
  • cache Laravel pour certains paramètres et données serveur ;
  • ressources statiques et manifest côté applications web ;
  • comportements de cache propres au navigateur ou à Next.js.

Ces caches améliorent déjà l'expérience, mais ils ne constituent pas encore le moteur mobile unifié décrit dans ce document.

Architecture cible

Le Cache Engine devient la couche unique de pilotage du cache mobile. Il organise les niveaux de cache, les politiques d'expiration, l'invalidation, la taille maximale et la continuité hors connexion.

Il reste un cache, jamais une base métier parallèle. La vérité demeure côté serveur.

Migration

La migration consiste à :

  1. inventorier les caches existants dans dmv-public, dmv-workspace et l'API ;
  2. définir les contrats de cache par niveau : shell, contexte personnel, territoire, contenus consultés, brouillons ;
  3. encapsuler les caches front existants derrière une interface mobile commune ;
  4. introduire les politiques d'expiration et d'invalidation pilotées par DMV ;
  5. connecter le Cache Engine au Synchronization Engine lorsque celui-ci est disponible.


2. Philosophie

Le cache est un accélérateur.

Jamais une source de vérité.

Le principe fondamental est le suivant :

Serveur

│ Vérité


Cache Local


│ Consultation


Utilisateur

Le téléphone ne décide jamais quelle donnée est correcte.

Le serveur conserve toujours ce rôle.


3. Responsabilités

Le Cache Engine est responsable de :

  • conserver temporairement certaines données ;
  • déterminer quelles données peuvent être utilisées hors connexion ;
  • supprimer automatiquement les données devenues obsolètes ;
  • réduire les téléchargements inutiles ;
  • accélérer les temps d'ouverture.

Il n'est jamais responsable :

  • des règles métier ;
  • des permissions ;
  • des conflits ;
  • des synchronisations.

4. Les différents niveaux de cache

Toutes les données n'ont pas la même importance.

Le cache est organisé en plusieurs niveaux.


Niveau 0 — Application

Ce niveau contient :

  • configuration locale ;
  • préférences générales ;
  • version de l'application ;
  • paramètres techniques.

Ces données changent rarement.


Niveau 1 — Utilisateur

Contient :

  • session ;
  • préférences ;
  • favoris ;
  • paramètres ;
  • thème ;
  • langue.

Ces données sont prioritaires.

Elles doivent toujours être disponibles.


Niveau 2 — Contexte personnel

Contient notamment :

  • Mon Espace ;
  • Mon Agenda ;
  • Mes acteurs ;
  • Mes associations ;
  • Mes notifications récentes.

L'objectif est de retrouver immédiatement son environnement.


Niveau 3 — Contexte territorial

Contient :

  • commune courante ;
  • Mur ;
  • agenda communal ;
  • services ;
  • informations utiles.

Ce cache est renouvelé régulièrement.


Niveau 4 — Consultation récente

Conserve :

  • publications ouvertes ;
  • profils d'acteurs ;
  • événements ;
  • pages consultées.

Cette mémoire améliore énormément la sensation de fluidité.


Niveau 5 — Brouillons

Ce niveau est particulier.

Les brouillons ne sont jamais supprimés automatiquement.

Ils restent présents jusqu'à :

  • synchronisation réussie ;
  • suppression volontaire.

5. Politique de rafraîchissement

Le cache n'est jamais considéré comme permanent.

Chaque type de donnée possède sa propre politique.

Exemple :

DonnéeStratégie
SessionImmédiate
FavorisPrioritaire
MurRafraîchissement fréquent
CommuneSelon activité
PublicationsSelon consultation
BrouillonsJamais supprimés automatiquement

Cette politique reste configurable.


6. Cache intelligent

Le Cache Engine ne stocke pas tout.

Il privilégie :

  • les données les plus consultées ;
  • les données personnelles ;
  • les contenus récemment ouverts.

Les éléments rarement utilisés peuvent être supprimés automatiquement.


7. Invalidations

Une donnée devient invalide lorsqu'elle :

  • est supprimée ;
  • est modifiée sur le serveur ;
  • dépasse sa durée de vie ;
  • est explicitement invalidée.

Le Cache Engine doit pouvoir supprimer uniquement les éléments concernés.

Jamais l'intégralité du cache.


8. Taille du cache

Le cache ne doit pas grandir indéfiniment.

Une politique automatique doit permettre :

  • suppression des anciennes données ;
  • conservation des contenus récents ;
  • protection des brouillons.

L'utilisateur ne doit jamais avoir à gérer cette mémoire.


9. Images

Les médias représentent la plus grande partie du cache.

Ils doivent être conservés indépendamment des données métier.

Le Cache Engine doit pouvoir :

  • conserver une miniature ;
  • supprimer uniquement l'image ;
  • recharger automatiquement la version HD.

10. Fonctionnement hors connexion

Lorsque le réseau disparaît :

le Cache Engine devient la seule source disponible.

L'utilisateur continue à consulter :

  • les données personnelles ;
  • les publications récentes ;
  • les communes consultées ;
  • les événements ouverts.

Aucune nouvelle donnée ne peut être récupérée.


11. Retour du réseau

Au retour de la connexion :

le Cache Engine :

  1. vérifie la connectivité ;
  2. met à jour les éléments prioritaires ;
  3. rafraîchit progressivement les autres contenus.

Cette synchronisation est silencieuse.


12. Sécurité

Le cache peut contenir des informations personnelles.

Il doit donc :

  • être stocké localement de manière sécurisée ;
  • être supprimé lors de la déconnexion ;
  • respecter les règles RGPD.

Certaines données sensibles pourront être chiffrées.


13. Administration

Le comportement du Cache Engine est défini par l'équipe DMV.

Les utilisateurs ne configurent pas :

  • les durées ;
  • les priorités ;
  • les règles d'invalidation.

Cette politique constitue un choix d'architecture.


14. Évolutions futures

Le Cache Engine devra pouvoir intégrer :

  • préchargement intelligent ;
  • prédiction des consultations ;
  • IA de priorisation ;
  • téléchargement adaptatif selon le réseau ;
  • optimisation batterie.

Sans modifier son architecture.


15. ADR

Décision

DMV adopte un Cache Engine centralisé.

Alternatives étudiées

Aucun cache

Rejeté.

Performances insuffisantes.


Cache complet de la plateforme

Rejeté.

Trop volumineux.

Complexité énorme.

Conflits.


Cache intelligent hiérarchisé

Retenu.

Simple.

Rapide.

Évolutif.

Compatible avec Online First.


16. Décisions figées

✅ Le cache est un composant d'architecture.

✅ Le serveur reste la source de vérité.

✅ Les brouillons sont protégés.

✅ Les politiques d'invalidation sont centralisées.

✅ Le cache est hiérarchisé.

✅ Les utilisateurs ne configurent pas le Cache Engine.


Conclusion

Le Cache Engine est l'un des piliers de DMV Mobile.

Son objectif n'est pas uniquement d'améliorer les performances.

Il garantit une expérience utilisateur fluide, réduit la dépendance au réseau et permet au mode Online First with Offline Continuity de fonctionner de manière fiable sans transformer le téléphone en base de données métier.