indexedDB在iOS上性能不佳?

时间:2017-01-24 09:28:34

标签: ios google-chrome ipad safari indexeddb

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

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

  2. 如果我在Safari中使用 WebSQL看起来很好但是当我在Safari 中使用 indexedDB时,它可以 SLOW 。< / p>

  3. 当我们在iPad 3上使用 Chrome 时,它也可以慢速。 (因为,Chrome使用indexedDB)

  4. WebSQL已被弃用,根据我的调查,indexedDB在iOS上存在一些瓶颈(在我的情况下是iOS 9.3.5和iPad 3)。 对我来说最好的方法是为Chrome找到解决方案(在iOS上)。请写下您的想法和提示。谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

我看到iOS和Safari的每个记录写入次数都越来越差,我试图写的记录越多,而Chrome的每个记录写入时间几乎保持不变,无论我试写的记录数量是多少。

此表显示每个浏览器中的记录/ ms。

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条记录的块?看起来很糟糕。我很想知道是否有其他人有关于此建议或其他建议的更多信息。