Apple最近在OSX上的iOS8 Safari和Safari 7.1中增加了对indexeddb的支持。我试图在一个Web应用程序中使用它,该应用程序在indexeddb中存储大约65,000条记录,并使用一些复合索引来查询它们。indexeddb的Safari实施非常缓慢
它对我很有用,但与Chrome的indexeddb实现相比,它确实很慢。
具体而言...一个针对Chrome的indexeddb需要2ms的查询需要500ms针对Apple的indexedbb。此特定查询使用复合索引数据库索引(密钥中的2个字段),使用该密钥的IDBKeyRange.only值可带回总计65,000个约100个文档。
我的应用程序也支持websql作为存储机制,当我切换到Safari时,性能非常好。我的查询将在几ms内返回,就像Chrome一样。
其他任何人遇到Apple的indexeddb执行缓慢的麻烦?关于如何使其更好地工作或者我们只需等待Apple解决它的任何建议?
我相信Apple的indexeddb实现实际上只是websql的一个包装,而且我可以直接用性能良好的websql实现我的应用程序,这意味着如果实现的很好,这样的包装应该可以正常工作。可悲的是,情况并非如此!
更新...我安装了iOS9 beta,其中包含Safari 9和indexeddb已修复!性能很好,其关键和其他错误的问题已消失。我测试了1.5GB的JSON文件,一切都很好。另外,50MB的数据大小限制消失了,并且没有提示用户存储数据。 – Category6 2015-07-30 20:29:06
更新2.我说得太快了。 iOS9的indexeddb稍微好一点,因为50MB的限制消失了,一些bug已经修复,但是一旦你的文档超过了几千个,性能仍然很糟糕。索引查询的响应时间超过5秒。如果您的文档不止一个,则无法使用。 – Category6 2015-10-16 13:37:59