繁体   English   中英

如何在iPhone应用程序中缓存Javascript和JSON数据?

[英]How can I cache Javascript and JSON data in my iPhone app?

我正在使用Titanium开发本机iPhone应用程序。 在这个应用程序中,我正在使用来自远程API(我在Rails 3中开发)的数据。 我希望用户尽可能在手机上缓存API数据。 我需要帮助的是缓存的概念。 最好的方法是什么? API中数据的性质是它需要是最新的。 因为联系数据可以随时更改。

我对缓存过程如何工作一无所知。 如果您能解释管理API缓存过程的最佳方法,我将非常高兴!

我正在使用JSON和Javascript。

“ API中数据的性质是它必须是最新的。因为联系数据可以随时更改”

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

您可能仍想缓存数据的唯一原因是使数据脱机可用。 既然如此,我将使用iphone本身的SQLite数据库。

Titanium缓存是带有单元测试的简洁代码,并在自述文件中提供了一些示例代码。 我在几分钟内将其与自己的项目集成在一起,并且效果很好。

我认为缓存的类型取决于应用程序。

您可以在以下位置缓存数据:

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

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

您可以找到有关分布式系统文献的有趣信息。

再见

这里有几个选择。

1)您可以使用ASIHTTPRequest并忽略缓存头来缓存所有内容。 使用您的应用程序时,您可以检测是否正在缓存。 如果命中,则在命中高速缓存后向服务器触发请求以请求任何新数据。 您可以通过在URL的末尾附加一个随机URL参数来实现此目的,因为缓存是从URL退出的。 如果您拥有良好的连接和新数据,请加载它。否则,不执行任何操作,并且在良好连接下使用该应用程序时,您的用户拥有最新数据

2)通过总是命中高速缓存来执行#1的大部分操作,而不是在命中高速缓存后向服务器触发同一请求的不可访问版本,而是启动不可高速缓存的时间戳检查以查看数据是否已更新。 如果已经存在,请触发不可缓存的完整API请求。 如果没有,或者失败,您将无能为力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM