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.
spójrz na to podobne pytanie: http://stackoverflow.com/questions/12914646/standard-way-of-keeping-offline-db-and-online-db-synced –