0

我目前正在开发一个带有 phonegap 和 jquerymobile 的应用程序。该应用程序包含许多将显示给用户的数据。所有数据都存储在 phonegap 存储实现中。数据将在列表视图、详细视图和过滤列表视图等中对用户可见 - 到目前为止没问题,但我的问题来了:

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

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

这是可能的,还是会减慢应用程序的速度。我可以或应该使用另一种方法吗?


对埃里克的回答:

但我意识到我应该多解释一下:

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

这些数组都不会被更改或操纵 - 唯一可能发生的事情是由于与服务器同步而对所有数据进行完全更改。

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

还是没有好主意?如果是,那就不是好主意 - 什么是更好的方法?

4

1 回答 1

0

我猜这取决于您所说的“条目”是什么意思,但在我看来,这听起来像是潜在的巨大负载负担,然后是内存中不必要的非常大的对象。首先,我建议在某处将对象表示为字符串。该事物中的字符数表示您实际每页加载的字节数,因为我假设它不会采用永远不会更改且浏览器必须解析的一次性加载 js 文件的形式页面加载后的傻事。

我的直觉告诉我,无论如何,这都是错误的做法。如果您需要超过 2D 数组,这听起来可以很好地进入兆字节,这将增加整秒的加载时间,但更重要的是,听起来您正在尝试做一些只能部分缓解的事情你真正的问题,如果有的话,因为这只能帮助你减少初始查找而不是更新,这是客户端异步可能变得非常混乱的地方。此外,如果这些数据有增长的潜力,那么现在看来可以管理的东西,将来很容易毁掉你的应用程序。

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

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

于 2012-10-18T21:52:26.860 回答