2012-06-20 26 views
0

目前我正在建设一个通过检索从Ruby on Rails的应用Ajax调用(返回JSON)信息的几个移动应用程序(目前在iOS上,但后来的Android)。这显然也适用于其他应用程序以及使用其他来源返回JSON数据的应用程序。在本地存储数据或仅在移动设备上使用ajax? - Appcelerator的

的主要问题是什么时候来存储数据,并在只使用AJAX调用来检索它。目前,我的应用程序不会在本地存储任何内容,而是需要针对所有数据的Ajax调用。我认为,对于这个例子,我们可以使用Twitter移动应用程序,这是很多人都熟悉的,并且有很多功能,我想知道他们是如何做到的(从技术上讲更符合逻辑)。

问题:

1)当你登录你看到的第一件事是所有的信息流中的项目清单。该列表可以离线使用。这是否意味着,当您最初登录时,Twitter已经将所有最后的X(100?)流项目拉入本地数据库,然后未来的视图将其从此处拉出?

2)如果您随后将手机置于飞行模式(或仅关闭移动数据)并单击其中一条推文,则会打开包含所有数据的推文页面。因此,现在看起来他们并不是每次访问tweet页面(这是我的应用程序当前所做的工作,需要一些时间来加载数据并创建视图),都会通过单独的方式提取这些信息。是否有意义,他们可能只是使用他们创建流项目时所拉入的相同信息?

3)用户。 (例如,在查看用户“个人资料”页面时)是否更好地练习如何在本地存储用户数据,然后刷新将来的访问,或者每次都通过ajax提取所有数据?理论上每个需要一个Ajax调用...

我认为这些是我的主要问题现在。如果任何人对这些事情有任何想法(或对移动存储的任何其他见解),那将是非常棒的!如果任何人需要我引用的任何截图,请告诉我,我很乐意为您提供这些截图。

目前使用:

Appcelerator的钛为iOS
Ruby on Rails的对后端和远程存储

回答

0

确定首先有本地存储和设备高速缓存之间的差。

手机缓存大量的数据,因此,它并没有使用你的数据计划,每次提出要求。当你在safari上打开一个页面时,它的想法也是一样的,进入主屏幕,然后返回Safari。这不是本地保存的,只是由IOS缓存。

当你应该使用本地存储的时候,数据永远不会改变,使用twitter作为例子就像你有,在第一次启动它下载你当前的活动,如果其中一个包含链接,那么它会产生一个新的请求,如果您关闭蜂窝数据并仍然能够点击链接,这不是因为twitter本地存储了它,而是因为IOS暂时缓存了它以避免多次下载。 twitter可能很好地保存了你本地的一些活动,但至少从我所看到的它存储了从最近开始的最大限制,它经常下载其余的活动。

一般来说,如果数据是基于网络的,那么它就可以使用ajax调用,这是大多数人所做的,本地存储是仅在设备上创建/查看数据的时候(比如记录笔记的应用程序) 。如果您希望提供本地存储,以便某人可以在线查看活动,那么很好,但这不是必需的功能。

大多数人只会开始考虑如果用户经常反复请求相同的数据,并且不会经常改变,那么您需要开发一个最后修改的系统,在那里您发送ajax调用来查看是有什么新的,如果不从本地读取。如果数据是动态的并且可能经常改变,坚持使用ajax调用

+0

Simon,谢谢你!真的很棒的信息。我认为这句话“如果你希望提供本地存储,这样人们就可以在线观看那里的活动了,但是这是一项功能不是必需的。”真的很受欢迎。我现在(以及将来)所要做的就是完全依靠ajax调用,直到完全构建应用程序,然后查看是否有方法使用本地存储来加速它。你是对的,对于动态创建的内容经常更新,大多数情况下将数据保留在远程服务器上可能是一个好主意。谢谢! –

+0

没问题,是的,除非在应用程序构建为维护/升级任务之后,使用Ajax调用它肯定是有意义的事情。与未来的应用程序祝好运 –

相关问题