Domanda

La mia domanda è un follow-up questo argomento. Adoro la semplicità e le prestazioni di Firebase da ciò che ho visto finora.

Come ho capito, Firebase.js sincronizza le istantanee dei dati dal server in un oggetto nella memoria JavaScript. Tuttavia, attualmente non esiste funzionalità per memorizzare nella cache questi dati su disco.

Di conseguenza:

  1. Le applicazioni sono necessarie per avere una connessione al momento dell'avvio, quindi non esiste un vero accesso offline.
  2. La larghezza di banda viene sprecata ogni volta che un'app si avvia nuovamente trasmettendo tutti i dati precedenti.

Poiché i dati di Snapshot sono seduti in memoria come oggetto JavaScript, dovrebbe essere abbastanza banale per serializzarlo come JSON e salvarlo su LocalStorage, quindi lo stato di applicazione esatto può essere caricato la prossima volta che l'app sarà avviata, online o no. Ma poiché il codice Firebase.js è minimizzato e criptico, non ho idea di dove cercare.

Pouchdb Gestisce molto bene su un backend di CouchDB. (Ma manca il tempo di risposta rapido e la semplicità della base di fuoco.)

Quindi le mie domande sono:

1. Quali dati avrei bisogno di serializzare per salvare un'istantanea su LocalStorage? Come posso quindi caricarlo in Firebase quando inizia l'app?

2. Dove posso scaricare il codice sorgente DEV non minimizzato originale per Firebase.js?

(A proposito, due caratteristiche che aiuterebbero Firebase a far esplodere la competizione dall'acqua: memorizzazione nella cache offline e mappa.)

È stato utile?

Soluzione

La memorizzazione nella cache offline e la funzionalità di riduzione della mappa sono entrambe in fase di sviluppo. Il Firebase.js La fonte è disponibile qui per dev e debug.

Puoi serializzare un'istantanea a livello locale Exportval per preservare tutti i dati prioritari. Se non si utilizza le priorità, un semplice valore farà:

var fb = new Firebase(URL);
fb.once('value', function(snapshot) {
   console.log('values with priorities', snapshot.exportVal());

   console.log('values without priorities', snapshot.val());
});

Più tardi, se Firebase è offline (usa .info/connesso Per aiutarti a determinare questo) quando viene caricata l'app, puoi chiamare .impostare() Per rimettere quei dati nella base di fuoco locale. Quando/se Firebase viene online, verrà sincronizzato.

Tuttavia, questo è veramente adatto solo a dati statici a cui solo una persona accederà e cambierà. Considera, ad esempio, la ricaduta se scarico i dati, tenerli localmente per una settimana ed è modificato da molti altri utenti durante quel periodo, quindi carico la mia app offline, apporta una modifica minore e poi vengo online. I miei cambiamenti stantii avrebbero spazzato via tutto il lavoro svolto nel mezzo.

Esistono molti modi per affrontare questo-risoluzione del conflitto, utilizzando regole di sicurezza e contatori/timestamp di aggiornamento per rilevare i dati stantii e prevenire regressioni-ma questa non è una faccenda semplice e ha bisogno di una profonda considerazione prima di percorrere questa rotta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top