当我从indexedDB读取数据(在我的情况下超过3000个项目)时,它的工作速度很慢。我使用的浏览器并不重要。我在Chrome和Safari上获得了相同的结果。我用iPad 3进行测试。 在这个问题的范围内,我发现了以下有趣的事情:
当我在桌面版Chrome 上打开我的客户端应用程序时,它以适当的方式 。
如果我在Safari中使用 WebSQL看起来很好但是当我在Safari 中使用 indexedDB时,它可以 SLOW 。< / p>
当我们在iPad 3上使用 Chrome 时,它也可以慢速。 (因为,Chrome使用indexedDB)
WebSQL已被弃用,根据我的调查,indexedDB在iOS上存在一些瓶颈(在我的情况下是iOS 9.3.5和iPad 3)。 对我来说最好的方法是为Chrome找到解决方案(在iOS上)。请写下您的想法和提示。谢谢!
答案 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条记录的块?看起来很糟糕。我很想知道是否有其他人有关于此建议或其他建议的更多信息。