0

我有一个在 iOS 和 Android 上运行的 HTML5 移动应用程序。用户通常会将少量本地数据存储在几个表中。假设五个表平均有三个记录。

websql的性能真的很差。我在这篇文章中读到,大部分延迟可能是在为每个事务打开和关闭数据库时。我的用户通常一次只做一个事务,因此每次操作打开和关闭数据库所需的时间通常占总时间的很大一部分。

我想知道我是否可以只打开一次数据库,省去所有事务包装器并立即执行 sql?

除了用户更新他们的数据,或者应用程序在更新后读取数据并将数据发送到服务器进行计算和统计之外,任何其他人或进程都不会使用该表。

最关键的是:如果我遵循上述策略,并且数据库从未关闭,但用户或操作系统关闭应用程序(正确地说:webview),更改的数据会保留还是丢失?

4

2 回答 2

0

我也保持连接打开。对于 IndexedDB,我可以同时在 UI 和后台线程上保持打开状态而不会出现问题。我相信 WebSQL 也会一样。如果你只使用 JS 文件,你可以试试我自己的javascript 库,它是 IndexedDB 和 WebSQL 的非常薄的包装器。但是该库是为 IndexedDb 风格编写的。

于 2012-09-04T13:00:19.317 回答
0

好的,我发现了问题。我使用persistenceJS框架来处理本地数据库。这保留了存储在 js 对象中的 websql 数据的副本,并使数据库和 js 对象保持同步。这是一个需要一段时间的过程,我将所有内容都放在同步之后的“刷新”处理程序中。

于 2012-08-28T09:24:16.920 回答