2011-04-02 35 views
4

我正在开发一个本地iPhone应用程序钛。 在这个应用程序中,我使用的是远程API(我在Rails 3中开发的)中的数据。 我希望用户尽可能在手机上缓存API数据。 我需要帮助的是缓存的概念。做这件事的最好方法是什么? API中数据的性质是它需要是最新的。因为它是可随时更改的联系人数据。如何在我的iPhone应用程序中缓存Javascript和JSON数据?

我不知道缓存过程如何工作。如果你有人可以解释 管理API的缓存过程的最佳方式,我将非常高兴!

我正在使用JSON和Javascript。

回答

0

我认为它的应用程序相关的缓存的类型。

您可以在缓存数据:

  1. 客户端;
  2. 服务器;
  3. 其他网元。

关键点是刷新数据。错误的算法会产生不一致的数据。

你可以找到关于分布式系统

再见

+0

由于它是一个iPhone应用程序,我将使用客户端缓存,可能是本地数据库或文件系统上的文件。 – 2011-04-02 17:05:05

+0

您可以使用网页浏览器缓存等方法。 – 2011-04-02 17:21:39

+0

听起来很有趣。这是如何完成的? – 2011-04-02 17:31:49

1

的文学有趣的信息“的数据的API中的本质是,它必须是最新的。因为它是接触数据可以随时更改“

如果这是真的,那么它会使得任何类型的缓存都是多余的,因为您需要将缓存与实时数据进行比较以检查更改,从而使缓存本身毫无意义。

您可能仍想要缓存数据的唯一原因是让它可以脱机使用。这种情况下,我会使用一个SQLite数据库,这是原生的iPhone。

+1

您可能有某种API告诉您用户数据上次更改的时间。这样,您不必获取所有数据,只需通过API即可。 – ceejayoz 2011-04-02 17:28:10

1

titanium-cache是带单元测试的干净代码,并在自述文件中提供了一些示例代码。我在几分钟内就将它与我自己的项目集成在一起,并且它工作得很好。

+0

你能否给你的答案添加一些单词,而不是只有链接? – 2011-08-15 11:47:52

+0

当然,现在好点了吗? :-) – neoneye 2011-08-16 13:22:19

+0

不完美,但更好。谢谢。 – 2011-08-16 13:36:11

0

这里有几个选项。

1)您可以使用ASIHTTPRequest并忽略缓存标头来缓存所有内容。当您的应用程序正在使用时,您可以检测到缓存是否被击中。如果命中,则在缓存命中后向服务器发出请求以请求任何新数据。您可以通过在URL的末尾附加一个随机URL参数来实现此目的,因为缓存键不在URL中。如果你有良好的连接和新的数据,加载它。否则什么都不做,并且你的用户在良好的连接下使用应用程序时有最新的数据

2)通过总是点击缓存来做大部分#1在点击高速缓存后向服务器发送相同请求的非高速缓存版本,引发非高速缓存时间戳检查以查看数据是否已更新。如果已经发出,请发出不可缓存的完整API请求。如果它没有或失败,你什么都不能做。

相关问题