Comprendre le Mode Hors Ligne et la Mise en Cache

Comment LobbyFlight fonctionne hors ligne et comment la mise en cache assure l'affichage continu

15 min de lectureDernière mise à jour : 1/15/20240

Comprendre le Mode Hors Ligne et la Mise en Cache

LobbyFlight est conçu pour un fonctionnement 24h/24, 7j/7 dans les halls d'hôtel. Le système de mise en cache intelligent garantit que votre affichage continue à montrer les informations de vol même pendant les interruptions réseau.

Fonctionnement du Mode Hors Ligne

Architecture Service Worker

LobbyFlight utilise un Service Worker - une technologie JavaScript qui s'exécute en arrière-plan et gère la mise en cache.

Avantages :

  • Chargement instantané de l'affichage (depuis le cache)
  • Mise en cache automatique des données
  • Synchronisation en arrière-plan
  • Fonctionnalité hors ligne
  • Qu'est-ce qui est mis en cache ?

    ContenuDurée de stockageFréquence de mise à jour
    -----------------------------------------------------
    Fichiers app (HTML, CSS, JS)Jusqu'à mise à jourÀ la version app
    Données de vol6 heuresToutes les 5 minutes
    Données météo2 heuresToutes les 30 minutes
    Logo et imagesIllimitéSur changement
    Configuration24 heuresSur changement

    Comportement Hors Ligne

    Quand Internet est Perdu

  • Réponse immédiate (0-5 secondes) :
  • - Le Service Worker intercepte les requêtes

    - Les données en cache sont livrées

    - L'utilisateur ne remarque rien

  • Après 10 secondes :
  • - Barre de statut orange : "Mode hors ligne"

    - Les données de vol en cache continuent à s'afficher

    - L'heure de dernière mise à jour est affichée

  • Après 30 minutes :
  • - Avertissement : "Les données peuvent être obsolètes"

    - L'affichage continue de fonctionner

    - Les utilisateurs sont informés

  • Après 6 heures :
  • - Données en cache marquées comme périmées

    - Indication claire affichée

    - Le système continue de tenter la reconnexion

    Reconnexion Automatique

    Le système essaie continuellement de restaurer la connexion :

    // Logique de reconnexion
    function tryReconnect() {
      fetch('/api/health')
        .then(() => {
          showNotification('Connexion restaurée')
          refreshData()
        })
        .catch(() => {
          attempts++
          const delay = attempts < 30 ? 1000 :
                       attempts < 60 ? 5000 : 30000
          setTimeout(tryReconnect, delay)
        })
    }

    Gestion du Cache

    Nettoyage Automatique

    Le Service Worker effectue un nettoyage automatique :

    À la mise à jour de l'app :

  • La nouvelle version du Service Worker est installée
  • Les anciennes versions de cache sont identifiées
  • Les caches obsolètes sont supprimés
  • La nouvelle version est activée
  • Vider le Cache Manuellement

    Méthode 1 : Via les DevTools du Navigateur

  • Ouvrez Chrome → F12
  • Onglet Application → Stockage
  • Cache Storage → lobbyflight-v1
  • Clic droit → Supprimer
  • Méthode 2 : Via la Console JavaScript

    // Vider tous les caches
    caches.keys().then(names => {
      names.forEach(name => caches.delete(name))
    })
    
    // Ré-enregistrer le Service Worker
    navigator.serviceWorker.getRegistration().then(reg => {
      reg.unregister()
      window.location.reload()
    })

    Méthode 3 : Actualisation Forcée

  • Windows/Linux : Ctrl + Maj + F5
  • Mac : Cmd + Maj + R
  • Android Chrome : Paramètres → Confidentialité → Effacer les données de navigation
  • Gestion de la Taille du Cache

    Limites du navigateur :

  • Chrome : 6% du stockage disponible
  • Firefox : 10% du stockage disponible
  • Safari : 50 Mo initial, extensible
  • Utilisation typique de LobbyFlight :

  • Initiale : 3-5 Mo
  • Après 1 jour : 10-15 Mo
  • Après 1 semaine : 20-30 Mo
  • Maximum : ~50 Mo
  • Dépannage des Problèmes Hors Ligne

    Problème : Anciennes Données Affichées

    Symptômes :

  • Vols d'hier visibles
  • Météo incorrecte
  • Configuration obsolète
  • Diagnostic :

  • Chrome DevTools → Application → Cache Storage
  • Vérifiez l'en-tête 'sw-cached-at'
  • Comparez avec l'heure actuelle
  • Solutions :

  • Actualisation forcée (Ctrl+Maj+F5)
  • Vider le cache manuellement
  • Ré-enregistrer le Service Worker
  • Réinstaller l'app (PWA)
  • Problème : Mode Hors Ligne Malgré Internet

    Symptômes :

  • Barre orange hors ligne visible en permanence
  • Vérifications de santé échouent
  • Mais Internet fonctionne
  • Diagnostic :

  • Console → Onglet Réseau
  • Recherchez les requêtes /api/health échouées
  • Vérifiez les erreurs CORS ou TLS
  • Solutions :

  • Vérifiez les règles de pare-feu
  • Vérifiez la configuration proxy
  • Videz le cache DNS
  • Redémarrez le navigateur
  • Problème : Service Worker Ne Charge Pas

    Symptômes :

  • Pas de mode hors ligne disponible
  • Cache ne fonctionne pas
  • Installation PWA échouée
  • Diagnostic :

    // Exécutez dans la Console
    navigator.serviceWorker.getRegistrations().then(regs => {
      console.log('SWs enregistrés:', regs)
    })

    Solutions :

  • Utilisez HTTPS (obligatoire !)
  • Localhost est OK pour les tests
  • Désactivez le mode incognito
  • Effectuez une mise à jour du navigateur
  • Problème : Cache Trop Volumineux

    Symptômes :

  • Le navigateur devient lent
  • Erreur "Quota de stockage dépassé"
  • L'affichage répond lentement
  • Diagnostic :

    // Vérifier la taille du cache
    navigator.storage.estimate().then(estimate => {
      console.log(`Utilisé: ${estimate.usage / 1024 / 1024}Mo`)
      console.log(`Quota: ${estimate.quota / 1024 / 1024}Mo`)
    })

    Solutions :

  • Supprimez les anciens caches
  • Optimisez les tailles d'images
  • Ajustez la stratégie de cache
  • Augmentez le quota de stockage (si possible)
  • Bonnes Pratiques pour le Fonctionnement Hors Ligne

    Configuration Optimale

    Pour réseau stable :

  • Temps de cache courts (5 minutes)
  • Mises à jour agressives
  • Mise en cache minimale
  • Pour réseau instable :

  • Temps de cache plus longs (15-30 minutes)
  • Plus de pré-mise en cache
  • Approche hors ligne d'abord
  • Préparation pour le Hors Ligne

    Avant le déploiement :

  • Laissez l'affichage se charger complètement en ligne
  • Cliquez une fois sur tous les onglets
  • Laissez tourner 10 minutes (remplit les caches)
  • Puis déplacez à la position finale
  • Maintenance régulière :

  • Hebdomadaire : Redémarrage du navigateur
  • Mensuel : Vidage du cache
  • Trimestriel : Mise à jour du navigateur
  • Surveillance

    À surveiller :

  • Événements hors ligne par jour
  • Durée moyenne hors ligne
  • Taux de succès du cache
  • Requêtes API échouées
  • Seuils d'alerte :

  • > 10 événements hors ligne/jour
  • > 30 minutes hors ligne d'affilée
  • Taille du cache > 100 Mo
  • Taux de succès < 50%
  • Cet article vous a-t-il été utile ?