2012-10-21 11 views
10

Mam mały projekt, który przechowuje dane w IndexedDB w przeglądarce. Chciałbym dodać funkcję synchronizacji, aby użytkownicy mieli dostęp do danych wszędzie.Jak zsynchronizować dane lokalne indexedDB z serwerem?

Jak mogę zsynchronizować lokalne dane IndexedDB na zdalnym serwerze lub bazie danych serwera, aby uzyskać do nich dostęp wszędzie? Innymi słowy, chciałbym udostępnić this demo we wszystkich moich przeglądarkach. (Bezpieczeństwo nie jest problemem na tym etapie)

+0

spójrz na to podobne pytanie: http://stackoverflow.com/questions/12914646/standard-way-of-keeping-offline-db-and-online-db-synced –

Odpowiedz

13

W rzeczywistości na IndexedDB nie ma zbyt wiele do synchronizowania bazy danych. Potrzebujesz tylko usługi RESTful do replikacji z serwera na klienta i odwrotnie.

Aby zapewnić efektywną synchronizację, usługa powinna obsługiwać etag (specyfikacja HTTP) dla każdego rekordu, zaktualizowana (specyfikacja ATOM) dla kolekcji. Ponadto w celu obsługi aktualizacji do wznowienia konieczne są parametry totalResults, startIndex, itemsPerPage (OpenSearch spec) oraz porządkowanie według aktualizacji.

Po określeniu nagłówka rekordu "If-None-match" w etag, aby uzyskać pełną korzyść z buforowania, należy zastosować ustawienie PUTting rekordu nagłówka "If-Match" w celu rozwiązania konfliktu po stronie klienta. Aby zaktualizować kolekcję, zapytanie jest ograniczone przez zaktualizowany parametr, dzięki czemu zwracane są tylko rekordy spoza bazy danych klientów.

Oto, w jaki sposób mogę zaimplementować na moim opakowaniu interfejsu API IndexedDB o otwartym kodzie źródłowym. Zobacz przykładową aplikację: https://github.com/yathit/feature-matrix w angularjs i demo.

Zobacz także PouchDB.

+2

PouchDB wygląda pefect, good find! Dzięki! Link tutaj: http://pouchdb.com/ –

Powiązane problemy