Implementazione della sincronizzazione tra localStorage e il database SQL?

1

Ho creato una semplice web app, che funziona completamente offline: tutti i dati sono salvati in localStorage di HTML5. Ora voglio che i dati vengano sincronizzati con il server, in modo che l'utente possa utilizzare l'app su più dispositivi contemporaneamente.

Quello che ho fatto finora è:

  1. Per ogni operazione eseguita dall'utente, viene aggiunta una voce di registro.
  2. Quando l'utente è online, tutti i registri vengono trasferiti da localStorage a PHP tramite AJAX.
  3. Le modifiche corrispondenti vengono apportate nel database SQL.
  4. Tutti i registri vengono eliminati da localStorage.

Quindi, tutti i dati localStorage vengono sottoposti a "backup" sul server in modo corretto.

In ogni caso, le modifiche apportate da un dispositivo non si riflettono sull'altro dispositivo e viceversa, per fare ciò, dovremmo ottenere alcuni dati da SQL a localStorage.

Ora, la mia domanda è su quale sarà il modo appropriato e migliore per farlo?

Dopo i quattro passaggi precedenti, faccio a

  1. Cancella tutti i dati localStorage e salva i dati SQL in localStorage.
  2. Tieni un registro delle modifiche apportate nel database e fallo sul localStorage.
  3. Qualsiasi altro approccio.

Inoltre, che dire dei timestamp? Cosa succede se ci sono conflitti?

    
posta coder 25.04.2014 - 09:48
fonte

1 risposta

1

Dipenderà da chi è considerato il "master" nella tua applicazione, nel dispositivo client o nel server? Se è il client, ti consigliamo di fare una combinazione di # 1 e # 2: Spingi tutte le scritture sul server, quindi abbassa tutte le modifiche apportate sul lato server. Se il server è master, fai il contrario.

Per quanto riguarda i conflitti, potresti voler vedere come lo gestisce CouchDB. Mantiene entrambe le copie e le contrassegna come in conflitto per il livello dell'applicazione da risolvere. Il modo in cui gestirli dipende in gran parte da cosa stai archiviando e da quali sono le tue regole di business.

    
risposta data 29.04.2014 - 01:47
fonte

Leggi altre domande sui tag