Un cache à 2 niveaux pour consulter Wano Collector offline
Consulter ses collections de milliers d'objets tout en restant fluide, que ce soit dans le métro parisien, au fond d'un magasin ou en pleine campagne, c'est le défi technique que nous venons de relever avec la dernière mise à jour de Wano Collector.
Le problème : quand le réseau lâche, le défi des connexions instables
Un collectionneur consulte son app plusieurs fois par jour : vérifier une référence en brocante, scanner un code-barre en magasin, parcourir ses collections dans les transports. Mais la réalité terrain est brutale : réseaux mobiles capricieux, 4G/5G qui disparaît au fond d'un magasin, WiFi saturé.
Résultat ? Le temps de chargement est insupportables et la frustration devient maximale au pire moment.
La solution : cache hybride à 2 niveaux
Nous avons implémenté une stratégie qui combine performances et résilience.
Niveau 1 : Cache mémoire (RAM)
- Objectif : performances max pour les données fréquemment consultées
- Durée de vie : session applicative
- Temps d'accès : < 1ms
Niveau 2 : Cache persistant avec Isar
- Objectif : consultation offline et réseau dégradé
- Technologie : Isar Database — base NoSQL ultra-rapide pour Flutter
- Persistance : locale sur l'appareil
- Avantage : survit aux redémarrages, aucune connexion nécessaire
Comment ça marche concrètement
Au lancement
Un processus de préchargement s'exécute en arrière-plan pour synchroniser les collections depuis le serveur. La synchro est intelligente : elle ne télécharge que les deltas (modifications depuis la dernière synchro) pour économiser data et batterie.
En utilisation normale / réseau stable
Expérience totalement transparente. Wano interroge d'abord le cache mémoire, puis Isar si nécessaire, et enfin le serveur. Temps de chargement divisés par 10.
En mode dégradé ou offline
C'est là que ça devient intéressant :
- Consultation : totalement fonctionnelle. Parcourez vos collections, cherchez des références, consultez les fiches détaillées.
- Édition : désactivée temporairement. On ne peut pas garantir la cohérence des données sans serveur.
Dès que la connexion revient, la synchro reprend automatiquement en arrière-plan.
Les bénéfices
Pour les utilisateurs :
- Navigation ultra-fluide même avec une 3G poussive
- Consultation possible à 100 % offline (avion, métro, zones blanches)
- Économie de data mobile
- Autonomie préservée (moins de requêtes réseau = moins de consommation)
Pour l'infrastructure :
- Réduction drastique de la charge serveur
- Moins de requêtes API = économies d'hébergement
- Meilleure scalabilité pour absorber les pics d'usage
Choix techniques : pourquoi Isar
Plusieurs options s'offraient à nous pour le cache persistant : SQLite, Hive, ObjectBox… Nous avons choisi Isar Community pour :
- Ses performance : recherches ultra-rapides même sur 50k+ objets
- Son modèle asynchrone : parfait pour Flutter
- Sa faible empreinte mémoire
- Un typage fort : avec génération de code
Conclusion
Le passage en offline-first n'est pas qu'une feature, c'est un changement de paradigme. Au lieu de considérer le réseau comme acquis et l'offline comme une exception, nous inversons la logique : l'application fonctionne d'abord localement, et le réseau devient un bonus pour la synchronisation.
Résultat ? Une app qui respecte enfin la réalité d'usage des collectionneurs nomades.
Wano Collector est disponible sur iOS et Android. Envie d'implémenter une architecture offline-first dans votre app ? N'hésitez pas à nous contacter et parlons-en ensemble. 😊