ios - indexedDB 在 iOS 上表现不佳?

标签 ios google-chrome ipad safari indexeddb

当我从 indexedDB 读取数据(在我的例子中是超过 3000 项)时,它工作起来很慢。我使用什么浏览器并不重要。我在 Chrome 和 Safari 上得到了相同的结果。我使用 iPad 3 进行测试。 在这个问题的范围内,我发现了以下有趣的事情:

  1. 当我在桌面版 Chrome 上打开我的客户端应用程序时,它以适当的方式运行。

  2. 如果我在 Safari 中使用WebSQL,它看起来不错但是当我在 Safari 中使用indexedDB时,它运行

  3. 当我们在 iPad 3 上使用 Chrome 时,它的运行速度也。 (因为,Chrome 使用 indexedDB)

WebSQL 已被弃用,根据我的调查,indexedDB 在 iOS 上存在一些瓶颈(在我的例子中是 iOS 9.3.5 和 iPad 3)。 对我来说最好的方法是找到适用于 Chrome(在 iOS 上)的解决方案。请写下您的想法和建议。谢谢!

最佳答案

更新:下面描述的测试描述了 Safari 中的一个问题,该问题似乎已在 10.12.4 测试版中修复。

这里有更多数据,但基本上我看到的和你看到的一样。我使用 bulkPut() 将不同数量的记录写入干净的 IndexedDB。我在 XCode 模拟器中运行的 Chrome、Safari 和 iOS 10.2 上执行了此操作。三者都在同一台 Macbook Pro 上运行。我使用的是 Dexie.js 包装器,所以这有可能是由于包装器而不是 IndexedDB 本身造成的。

我看到的是,我尝试写入的记录越多,iOS 和 Safari 的每条记录写入时间就越差,而无论我尝试写入多少条记录,Chrome 的每条记录写入时间几乎保持不变。

此表显示了每个浏览器中的记录/毫秒。

records Chrome  Safari  ios Simulator
100     5.26    0.63    1.54
500     4.63    0.92    0.62
1000    5.26    0.71    0.61
2000    4.23    0.09    0.16
5000    4.21    0.02    0.02

然后我尝试使用 put() 而不是 bulkPut() 来记录相同的记录。对于少量记录,并且总是在 Chrome 上,这要慢得多。但是对于任一 Safari 浏览器上的大量记录,这会更快:

records Chrome  Safari  ios Simulator
100     0.45    0.08    0.40
500     0.46    0.14    0.35
1000    0.51    0.20    0.36
2000    0.54    0.21    0.39
5000    0.38    0.19    0.60

如果这是正确的(我有点怀疑它在所有情况下都是正确的,因为它没有意义),那么我想最好的策略是在 Chrome 上使用 bulkPut,但在 Safari 上使用 bulkPut不超过 1000 条记录的 block ?看起来很可怕。我很想知道是否还有其他人对此有更多信息或其他建议。

关于ios - indexedDB 在 iOS 上表现不佳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41824512/

相关文章:

iphone - NSOperation 取消 : NSInvocationOperation or NSOperation subclass?

ios - 使用 UISearchDisplayController 时未发生选择

ios - 如何以编程方式获取应用组名称?

c# - 跨平台使用的DLL项目应该是什么类型

json - Google Chrome 60.0.3112.90 VueJS response.data 错误

javascript - D3 动画导致 Chrome 上的 CPU 使用率过高/崩溃

ios-sim 命令启动 iPhone 6 或 iPad 6

ios - 为 ios 构建 Cordova 应用程序时更改消失

ios - 升级到 XCode 8 后应用安装失败

google-chrome - 用 chrome 打开而不是下载它