iPhone数据库&服务器数据库 - iPhone仅更新修改

时间:2010-05-04 09:26:33

标签: iphone sql-server xcode sqlite

我有一些疑问。首先,让我们有一个普通应用程序的iPhone应用程序流程。 (基于内容的应用程序)

  • 应用程序启动&检查网络可用性
  • 如果网络可用 - iPhone使用网络服务或API下载数据
  • 我们可以将这些响应(Web服务响应/ api响应)存储到* .plist文件中。
  • 当我们需要更新数据时,再次调用Web服务&再次整个数据存储* .plist文件。

  • 现在,假设 - 我在Server&amp ;;上有一张'eBooks'表它有超过500个条目。

  • 调用API /网络服务将回复500条记录。
  • 好的 - 第一次可以等待所有响应(我们可能会使用LIBXML2作为块)
  • 但是,如果我们经常使用网络服务下载此内容,那该怎么办呢。

这里有两个缺点

  • Wifi不必要的使用
  • iPhone CPU开销
  • 服务器CPU开销。
你来找我吗?

假设服务器上没有变化,为什么iPhone需要再次调用API。意味着参赛作品没有变化。条目是500,因为它是为什么再次下载?

让我再说一遍 - 问题。

假设

  • 一个应用程序有一个Server + database = Customers(当前有500条记录)
  • 有5个iPhone可以检索此数据
  • 所有iPhone已离线下载500条记录
  • 现在,服务器已添加新记录501
  • iPhone必须只下载1条记录而不是501条记录。

这怎么可能?

2 个答案:

答案 0 :(得分:1)

您可以为每个条目添加时间戳。每次在服务器端进行更改,添加或删除时,都会更新此时间戳。

执行查询时,您将提供一个字段,指示客户端已知的最新时间戳。对于第一个查询,这将是像Epoch。对于后续查询,它将是最后一次更新。

然后服务器必须过滤条目,因此它只返回自提供的时间戳以来已更改的条目。

答案 1 :(得分:0)

您可以在服务器应用上轻松实现分页,让您的客户端限制检索的条目数。您还可以实现某种可以在iPhone客户端上缓存的唯一标识符,然后在请求更新时,您可以发送已缓存的最后一项的唯一标识符。当您的服务器发送响应时,它应该只提供比您缓存的最后一项更新的项目。