【发布时间】:2013-12-27 07:40:58
【问题描述】:
我有一个将数据(从远程 CouchDb 实例获取)存储到本地 SQLite 数据库的移动应用程序。有时会发生同步请求,我想知道本地数据库中的所有项目是否它们的对应项在服务器上发生了变化。 (所以,他们的版本是否比本地数据库中的版本更新。)
但是我怎样才能只请求本地数据库中的特定项目,而不发出数百个单独的请求,并且不获取庞大的远程数据库中的所有文档?
我目前的做法是:对于每个本地文档,首先获取 HTTP 标头,然后仅当标头显示比本地文档更新的版本时才下载正文。我担心对于本地存储大量项目的用户,这会导致大量的 HTTP 请求
【问题讨论】:
-
一些工具使用的一种方法是使用校验和来触发同步
-
@Zarazthuztra 你能扩展一下吗?检查什么?
-
代表数据当前状态的任何内容的校验和。通过 MD5 或 SHA-1 运行它,然后将该值存储在 SQLLite 数据库中。当客户端和服务器之间进行初始握手时,您交换校验和。如果它们不同,那么您知道您需要同步。例如,这就是 IBM Worklight 知道是否更新本地应用程序的方式。
标签: couchdb