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 à :
- inventorier les caches existants dans
dmv-public,dmv-workspaceet l'API ; - définir les contrats de cache par niveau : shell, contexte personnel, territoire, contenus consultés, brouillons ;
- encapsuler les caches front existants derrière une interface mobile commune ;
- introduire les politiques d'expiration et d'invalidation pilotées par DMV ;
- 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ée | Stratégie |
|---|---|
| Session | Immédiate |
| Favoris | Prioritaire |
| Mur | Rafraîchissement fréquent |
| Commune | Selon activité |
| Publications | Selon consultation |
| Brouillons | Jamais 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 :
- vérifie la connectivité ;
- met à jour les éléments prioritaires ;
- 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.