Как синхронизировать локальные данные indexedDB с сервером?

У меня есть небольшой проект, который хранит данные в IndexedDB в браузере. Я хотел бы добавить функцию синхронизации, чтобы пользователи могли получать доступ к данным везде.

Как я могу синхронизировать локальные данные IndexedDB на удаленном сервере или базе данных сервера, чтобы я мог получить к ним доступ из любого места? Другими словами, я хотел бы сделать эту демонстрацию доступной во всех моих браузеры. (Безопасность не является проблемой на этом этапе)


person pmoubed    schedule 21.10.2012    source источник
comment
взгляните на этот похожий вопрос: stackoverflow.com/questions/12914646/   -  person Deni Spasovski    schedule 22.10.2012


Ответы (1)


На самом деле в IndexedDB не так много возможностей для синхронизации базы данных. Вам нужна только служба RESTful для репликации с сервера на клиент и наоборот.

Для эффективной синхронизации служба должна поддерживать etag (спецификация HTTP) для каждой записи, обновленную (спецификация ATOM) для коллекций. Кроме того, для поддержки возобновляемого обновления необходимы totalResults, startIndex, itemsPerPage (спецификация OpenSearch) и упорядочение по обновлению.

При ПОЛУЧАНИИ записи указывается заголовок «If-None-Match» etag, чтобы получить полное преимущество кэширования. При ПОЛОЖЕНИИ записи указывается заголовок «If-Match» для разрешения конфликта на стороне клиента. Для обновления коллекции запрос ограничивается обновляемым параметром, поэтому возвращаются только записи, которых нет в базе данных клиента.

Именно так я реализую свою оболочку API IndexedDB с открытым исходным кодом. См. пример приложения https://github.com/yathit/feature-matrix в angularjs и демонстрация.

Также обратите внимание на PouchDB.

person Kyaw Tun    schedule 22.10.2012