2012-10-21 10 views
10

Ich habe ein kleines Projekt, das Daten in IndexedDB im Browser speichert. Ich möchte die Synchronisierungsfunktion hinzufügen, damit Benutzer überall auf die Daten zugreifen können.Wie indexedDB lokale Daten mit Server synchronisiert werden?

Wie kann ich lokale IndexedDB-Daten in einem Remote-Server oder einer Server-Datenbank synchronisieren, damit ich überall darauf zugreifen kann? Mit anderen Worten, ich möchte this demo in allen meinen Browsern zur Verfügung stellen. (Sicherheit ist in dieser Phase kein Problem)

+0

werfen Sie einen Blick auf diese ähnliche Frage: http://StackOverflow.com/Questions/12914646/Standard-way-of-keeping-offline-db-and-online-db-synced –

Antwort

13

In der Tat gibt es nicht viel auf IndexedDB für die Synchronisierung der Datenbank. Sie benötigen nur den Dienst RESTful zum Replizieren von Server zu Client und umgekehrt.

Für eine effektive Synchronisierung sollte der Dienst Etag (HTTP-Spezifikation) für jeden Datensatz unterstützen, aktualisiert (ATOM-Spezifikation) für Sammlungen. Zusätzlich zur Unterstützung der fortsetzbaren Aktualisierung sind totalResults, startIndex, itemsPerPage (OpenSearch spec) und die Aktualisierung der Bestellung erforderlich.

Beim Abrufen eines Datensatzes 'If-None-Match' Header von Etag angegeben, um den vollen Caching-Vorteil zu erhalten, Wenn PUTTING ein Datensatz 'If-Match' Header angegeben ist Konflikt auf Client-Seite zu lösen. Um die Sammlung zu aktualisieren, wird die Abfrage durch den aktualisierten Parameter eingeschränkt, sodass nur Datensätze zurückgegeben werden, die nicht in der Client-Datenbank enthalten sind.

Das ist, wie ich auf meinem Open Source IndexedDB API-Wrapper implementieren implementieren. Siehe Beispiel-App https://github.com/yathit/feature-matrix in angularjs und demo.

Siehe auch PouchDB.

+2

PouchDB sieht pefect, gute finden! Vielen Dank! Link hier: http://pouchdb.com/ –

Verwandte Themen