Dovresti fornire una logica locale, sul lato client, e utilizzare la memoria locale. Visualizzazione del contenuto memorizzato nella cache, offline. Prendendo comandi che hanno effetto se collegati in seguito.
Questo non è banale: ci sono molte considerazioni, poiché non solo significa replicare alcune logiche di business sul client, il che è già abbastanza grave; tuttavia, questo non può, in generale, essere reso trasparente, il che significa che l'esperienza dell'utente è più complicata e impegnativa da sviluppare.
Diciamo che offline eseguo una serie di modifiche. Ma tornando online nel sistema reale, il contenuto che ho memorizzato nella cache diventa obsoleto mentre altri che sono online stanno apportando modifiche. I miei cambiamenti continuano a fare ciò che intendevo, e, se dovessero andare come erano, nonostante i valori memorizzati nella cache e le supposizioni che ho avuto quando ho apportato queste modifiche non sono forse più valide? Nel caso generale, non c'è una buona risposta. Sì, inviarli attraverso potrebbe essere molto cattivo (ad esempio, pagare una bolletta una seconda volta che il mio coniuge ha appena pagato); dove come alternativa è possibile scartare tutti quei cambiamenti (anche molto ostili), e l'ultimo, conciliare le modifiche è molto difficile da fare nel caso generale .
Non ci sono soluzioni magiche per il caso generale; tuttavia, alcuni domini problematici rendono questo più fattibile di altri. Andare più a fondo nel dominio del problema e i suoi casi d'uso è probabilmente il punto in cui si può fare il meglio piuttosto che tentare di risolverlo in generale.
In alcuni domini, potrebbe funzionare per offrire contenuto memorizzato nella cache e supportare l'utente prendendo alcune note sulle modifiche che desidera spostare in avanti. Quindi, quando si torna online, rivedere ogni nota o modifica prevista per la conferma prima (aggiustamento e / o) l'applicazione. Potresti anche consentire un'opzione per il pre-download di alcuni set o sottoinsiemi se l'utente sa che stanno per essere offline. Altrimenti potrebbe non esserci nulla nella cache con cui lavorare.