Ответ 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.