risposta

1

Iam non sicuro al 100%, ma penso che ci costerà un tale quadro. Vorrei raccomandare di dare un'occhiata a Google Gears.

Google Gears supporta l'archiviazione offline sul lato client.

Un altro approccio potrebbe essere quello di verificare il codice sorgente di TidlyWiki. Hanno creato un sistema wiki che memorizza tutti i dati sul lato client.

+1

L'archiviazione offline non è così difficile come una volta, ci sono alcune librerie che supportano Gears, HTML5 locale e flash. la domanda originale riguarda più la sincronizzazione in background con il server (se online) – Javier

+1

Inoltre, Google Gears viene eliminato. –

1

Non sono a conoscenza di alcuna libreria che lo faccia oggigiorno. Anche se è dura questa è una possibile idea, devo dire che non sono sicuro che fare una tale biblioteca sia un buon tentativo.

Dovrebbe fornire esempi di come esporre i dati del server alla libreria, come calcolare i delta e così via. Ciò costringerebbe lo sviluppatore a modificare questo codice lato server di conseguenza al protocollo della libreria. Questo potrebbe essere ottimo per nuove app e siti Web, ma questo potrebbe essere un problema per qualsiasi sito esistente, con una particolare struttura di dati, rendendo lo sforzo per implementarlo non tanto preferibile allo sviluppo del proprio Javascript per farlo con i dati attuali già esposti dall'app. Tutti questi in aggiunta a potenziali problemi di sicurezza sarebbero un po 'difficili da gestire in una libreria javascript generica.

IMHO questa è una grande idea per creare bundle o plug-in su specifici framework MVC basati su ORM, ad esempio Ruby on Rails o Django. Poiché il framework stesso ha un'astrazione per la struttura dei dati e molte correzioni di sicurezza già raggruppate insieme, fare un pacchetto per farlo sarebbe molto più riutilizzabile e più elegante.

0

Ho lavorato su questo. Sembra che sia quasi possibile utilizzando Google Documenti. La maggior parte delle API sono accessibili tramite Javascript. Sfortunatamente le eccezioni includono cose come upload e download, quindi mentre è possibile enumerare documenti, creare file, cambiare metadati, ecc. Tutti all'interno del browser, in realtà ottenere i dati è molto più difficile.

I fogli di lavoro di Google dispongono di API Javascript per l'accesso a singole celle, quindi è teoricamente possibile archiviare i dati in un foglio di calcolo. Sfortunatamente c'è un altro intero nell'API in cui sembra essere piuttosto difficile scrivere dati su una cella che in precedenza non conteneva dati, il che significa che una volta creato il foglio di lavoro vuoto, non è possibile popolarlo ...

3

Store.js gestire molto bene lo storage lato client. Nota che supporta IE6 + insieme ad altri browser. Per l'archiviazione sul lato server, potresti anche creare il tuo script, poiché non dovrebbe essere difficile.

+2

Secondo la loro documentazione: "store.js utilizza localStorage quando disponibile e ricade sul comportamento userData in IE6 e IE7". Non memorizza nel database SQL Web o IndexedDB. Inoltre non fa nulla per la sincronizzazione dei dati. –

0

Per quanto ne so Safari, Chrome e Opera basati su SQLite. SQLite ha un comando .dump che non è solo ottimo per ripristinare un database ma anche per sincronizzarsi con un altro database. Pertanto, potrebbe essere possibile richiamarlo dal database Javascript utilizzando .dump e, se necessario, modificare il dump e caricarlo sul database del server da eseguire.

Tuttavia, si vuole stare attenti a tentativi di SQL injection.

+0

Puoi accedere a .dump da Javascript? – oivvio

+0

Questo è ottimo per il backup del database locale, ma questo non è utilizzabile per le operazioni CRUD (ad esempio, la scalabilità). –

3

Poiché è stata posta questa domanda, è stato fatto molto lavoro sui database locali di archiviazione e sul lato client.

C'è una grande panoramica delle opzioni di archiviazione locali a Dive Into HTML5.

Sono inoltre disponibili diverse librerie di archiviazione JavaScript multipiattaforma, tra cui Lawnchair e persistence.js.

0

Hai provato jsonengine?

non so quanto questo progetto è vivo, ma questo risponde requirments tutto yor.

+0

Per quanto ho capito, 'jsonengine' è un'implementazione dell'API RESTful sul lato server. Fornisce esempi di utilizzo che mantengono i dati sul server o sulla memoria locale del client. Tuttavia, non viene fatto nulla per la sincronizzazione client-server. –

0

Firebase fa questo, anche se non è un modello relazionale

1

Proprio siamo imbattuti in questa domanda; per i posteri, CouchDB e Couchbase sono progettati per questo:

http://couchdb.apache.org/

Il client JavaScript:

https://pouchdb.com/

E Couchbase:

https://www.couchbase.com/

Infine, Couchbase Lite/Cellulare:

https://www.couchbase.com/products/lite

Quest'ultimo ottiene la sincronizzazione nativa CouchDB/CouchBase.

In tutti i casi è sufficiente accedere al database locale e sincronizzarsi se e quando ci si connette a Internet.