Phonegap App:将所有数据存储在一个对象中

时间:2012-10-18 17:50:04

标签: javascript arrays object cordova size

我目前正在开发一个带有phonegap和jquerymobile的应用程序。 该应用程序包含大量将显示给用户的数据。所有数据都存储在phonegap存储实现中。 用户可以在列表视图,详细信息视图和过滤的列表视图中看到这些数据等等 - 到目前为止没问题,但是我的问题出现了:

由于phonegap存储方法的异步方式(导致关系数据出现问题)以及大部分数据(至少部分)在所有视图中使用的事实,我正考虑将所有数据存储在一个大的javascript对象,所以所有的数据都是在启动时加载的,不需要很多数据库操作。

我认为该对象将包含大约10个2-4维散列数组,其中最大值为max。 2000-3000条目。

这是可能的,还是会使应用程序放慢太多。 是否有其他方法我可以或应该使用。


回答erik:

但我认识到我应该更多地解释一下:

将在对象中的数据由一个3个数组组成,其中包含许多实体,如实体{名称,标题,子标题,描述,创建日期,更新日期,小字符串,小字符串,小字符串},所有其他数组包含主要是3个较大阵列的关系标识符。

这些阵列都不会被更改或操纵 - 唯一可能发生的事情是因为与服务器同步而对所有数据进行了彻底的更改。

同样重要的是,所有数据都存储在本地,并且因为应用程序是用jquery mobile实现的,所以不会重新加载页面 - 如果应该显示其他内容,则需要html加载javascript和插入页面。

仍然没有好主意?如果是的话,没有好主意 - 什么是更好的方法?

1 个答案:

答案 0 :(得分:0)

取决于你对“条目”的意思,我猜,但听起来像是一个巨大的负载负担的可能性,其后是一个非常大的对象在内存中不必要的。首先,我建议将对象表示为某个字符串。该东西中的字符数表示您实际每页加载的字节数,因为我假设它不会是一次性加载js文件的形式,永远不会改变,浏览器必须解析页面加载后愚蠢的事情。

我的直觉说这是错误的方式。如果你需要超越2D数组,这听起来好像可以很好地进入兆字节,这将加载整秒加载时间,但更重要的是,听起来你正试图做一些只能部分缓解的事情你真正的问题,如果有的话,因为这只会帮助你减少初始查找而不是更新,这是客户端的异步可能变得非常混乱的地方。此外,如果该数据有可能增长,那么现在看来可以管理的内容很可能在将来很容易破坏您的应用。

避免多余HTTP请求的关键是始终将静态数据烘焙到页面中以及第一层内容(如果经济实惠)(例如,您在依赖选择中加载内容的第一个选择框中的内容框)。并尽可能缓存ajax调用的结果。

客户端逻辑中的关键是拥有一个一致的,可管理的API来获取服务器端数据,并且永远不会表示任何已更改或完成的内容,直到服务器确认它确实发生了。