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

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

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

Ответ 1

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

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

Когда указывается заголовок записи "If-None-Match" для etag, чтобы получить полную выгоду кэширования, когда для разрешения конфликта на стороне клиента указывается заголовок записи "If-Match". Чтобы обновить коллекцию, запрос ограничен обновленным параметром, поэтому возвращаются только записи, не содержащиеся в клиентской базе данных.

Вот как я участвую в реализации на моей открытой оболочке IndexedDB API. См. Пример app https://github.com/yathit/feature-matrix в angularjs и demo.

Также посмотрите PouchDB.