2009-12-21 70 views
0

我的应用程序是高度数据驱动的,需要经常更新。目前MySQL数据库通过PHP转储到一个xml文件中,当应用程序加载时它会下载这个文件。然后它将所有值加载到数据管理器类中的NSMutableArray内部,该类可以在应用程序的任何位置访问。如何正确缓存/更新使用远程数据库的数据驱动的iPhone应用程序?

这是问题所在,生成的XML文件大约是400kb,而这显然需要几分钟的时间才能在EDGE网络上下载,甚至对于一些3G用户也是如此。所以基本上我正在寻找关于如何正确缓存或优化我的应用程序的下载过程的选项。

我目前的想法是将整个XML文件缓存到iPhone的硬盘上,然后在用户浏览应用程序时将这些数据提供出来,然后在后台加载新的XML文件。问题在于用户现在总是会看到上一次运行的数据,如果只更改了一个字段,每次下载整个XML文件似乎都是浪费。

TLDR:我的iPhone应用程序的数据下载速度很慢,如何恰当地将这种影响最小化?

回答

1

我的建议是将数据缓存到iPhone上的SQLite数据库。当应用程序启动时,您将SQLite数据库与远程数据库同步......同时让用户知道您正在后台加载增量数据。

通过这样做,你会得到如下:

  1. 用户可以立即使用的应用程序与旧数据。
  2. 您让用户知道新数据即将到来。
  3. 您正在以更合适的格式存储数据。

一旦加载最新的数据...用户可以看到它。

+0

这是我想要考虑的。它还利用了iPhone的核心数据框架。唯一的问题是,这是一个付费工作,对风险的容忍度很低,而且我从未使用Core Data。客户希望能够在短时间内设置该选项,这可能只是将XML文件保存到磁盘,(不必重写代码来填充数组,并将其显示在相关的片段中应用程序。) – Jameson 2009-12-21 03:52:09

2

我不得不在这个夏天开发的应用程序中处理类似的事情。

我做了什么解决它是做一个初始下载的所有数据从服务器,并将其放置在客户端的数据库连同修订号。

然后每当用户再次连接时,它将修订号发送到服务器,如果修订号小于它从服务器发送的新数据(仅限新数据)的服务器修订号,同样的,它什么都不做。

这相当简单,它似乎对我来说工作得很好。

这种方法确实有缺点,即您的服务器必须比正常情况下做更多的处理,但它几乎没有什么,并且比浪费的带宽要好得多。

相关问题