Applications mobiles · Mixte

Travailler hors ligne : une application qui ne se casse pas dans un ascenseur

En une ligne : Concevez l'application autour de l'hypothèse qu'il n'y a pas de réseau, et vous obtenez gratuitement une application qui se sent aussi rapide quand il y en a un.

L'hypothèse de base

Un réseau cellulaire n'est pas un interrupteur marche-arrêt mais un spectre : lent, intermittent, connecté mais sans débit. Une application qui suppose une bonne connexion affiche un indicateur de chargement infini exactement quand l'utilisateur en a besoin.

La bonne approche : l'appareil maintient une source de vérité locale, et le réseau est un processus de synchronisation en arrière-plan.

Trois mécanismes

Cache de lecture. Ce qui a été chargé une fois est affiché à nouveau immédiatement, avec une discrète marque « en cours de mise à jour ».

File d'écriture. Les actions de l'utilisateur sont sauvegardées localement et envoyées dès qu'il y a une connexion. L'interface affiche le résultat immédiatement.

Résolution de conflit. Que se passe-t-il quand deux appareils ont modifié le même élément. Décidez à l'avance : le dernier gagne, fusion par champ, ou demander à l'utilisateur.

Ce que l'utilisateur doit voir

L'état de synchronisation silencieusement mais clairement, et ce qui n'a pas encore été envoyé. Masquer complètement l'état génère de la méfiance dès que quelque chose disparaît.

Pour aller plus loin

Conservez une version ou un horodatage de mise à jour du serveur sur chaque enregistrement, et renvoyez-le en écriture pour détecter un conflit. Sans cela, deux mises à jour en parallèle s'écrasent silencieusement — le pire type de perte de données, car personne ne reçoit d'erreur.