我有一个小项目,将数据存储在浏览器的 IndexedDB 中。我想添加同步功能,以便用户可以在任何地方访问数据。
如何在远程服务器或服务器数据库中同步本地 IndexedDB 数据,以便我可以在任何地方访问它?换句话说,我想让这个演示在我所有的浏览器中都可用。(这个阶段安全不是问题)
事实上,IndexedDB 上用于同步数据库的内容并不多。您只需要RESTful服务即可从服务器复制到客户端,反之亦然。
为了有效同步,服务应该支持每条记录的 etag(HTTP 规范),更新的集合(ATOM 规范)。此外,为了支持可恢复更新,totalResults、startIndex、itemsPerPage(OpenSearch规范)和按更新排序是必要的。
当 GET 指定 etag 的记录 'If-None-Match' 标头时,为了获得完整的缓存优势,当 PUT 指定记录 'If-Match' 标头以解决客户端的冲突时。要更新集合,查询受更新参数的限制,因此只返回不在客户端数据库中的记录。
这就是我在我的开源 IndexedDB API 包装器上实现的方式。请参阅angularjs 和demo中的示例应用程序https://github.com/yathit/feature-matrix。
另请查看PouchDB。