indexeddb的Safari实现非常缓慢

indexeddb的Safari实现非常缓慢,safari,ios8,mobile-safari,indexeddb,Safari,Ios8,Mobile Safari,Indexeddb,苹果最近在OSX上的iOS8 Safari和Safari 7.1中增加了对indexeddb的支持。我试图在一个web应用程序中使用它,该应用程序在indexeddb中存储了大约65000条记录,并使用一些复合索引查询它们 这对我来说是可行的,但与Chrome的indexeddb实现相比,它真的非常慢 具体地说。。。对Chrome的indexeddb进行2毫秒的查询,对Apple的indexeddb进行500毫秒的查询。此特定查询使用复合indexeddb索引(键中有2个字段),该索引使用键的I

苹果最近在OSX上的iOS8 Safari和Safari 7.1中增加了对indexeddb的支持。我试图在一个web应用程序中使用它,该应用程序在indexeddb中存储了大约65000条记录,并使用一些复合索引查询它们

这对我来说是可行的,但与Chrome的indexeddb实现相比,它真的非常慢

具体地说。。。对Chrome的indexeddb进行2毫秒的查询,对Apple的indexeddb进行500毫秒的查询。此特定查询使用复合indexeddb索引(键中有2个字段),该索引使用键的IDBKeyRange.only值返回总共65000个文档中的大约100个文档

我的应用程序也支持websql作为存储机制,当我在Safari中切换到websql时,性能非常好。我的查询在几毫秒后返回,就像Chrome一样

还有谁对苹果indexeddb的缓慢实施感到不满?关于如何让它更好地工作,或者我们只需要等待苹果修复它,有什么建议吗


我相信苹果的indexeddb实现实际上只是websql之上的一个包装器,而我可以直接使用websql实现我的应用程序,并且具有良好的性能,这意味着这样一个包装器如果实现得好,应该会表现得很好。可悲的是,事实并非如此

我们也看到了同样的事情。在Android上插入10000个对象的过程大约需要5到6秒,在iOS8上需要15分钟

Safari是webkit浏览器,因此如果它使用与此相同的代码库:


然后IndexedDB(很糟糕)基于SQLLite数据库。

我也遇到了这个问题。但我也发现桌子越大,速度越慢。我需要保存大约30000条记录,从服务器上获取大约2000条记录的一部分,然后插入。每批插入都比前一批慢,直到插入时间超过80分钟。我们提出的解决方案(非常丑陋)是为每个同步部分创建一个单独的对象存储。然后,您必须处理多个objectstores/etc上的查询,但它确实使其可用


在apple完成indexeddb的实现之前,这是我拥有的最好的解决方案。

Firefox indexeddb的实现也基于礼炮,但性能良好。只是出于兴趣,我们遇到了类似的时间问题。您最终创建了多少(大约)个对象存储?我将其设置为动态的,我认为每个存储最多可以放置2000条记录,然后继续下一个存储。它们在服务器上按id进行查询,然后插入到它们自己的对象存储中-例如,选择*where id>0和idSo,我认为目前它正在使用我们正在使用的生产数据生成16个对象存储。请注意,根据每个id的所有记录是否存在/是否处于活动状态/etc,一些对象存储只有接近1500个,而另一些则完全更新。。。我安装了iOS9测试版,其中包含Safari 9和indexeddb是固定的!性能很好,它的密钥问题和其他bug都消失了。我测试了高达1.5GB的json文档,一切正常。此外,50MB的数据大小限制已经取消,用户没有关于存储数据的提示。更新2。我说得太快了。iOS9 indexeddb稍微好一点,因为50MB的限制已经取消,一些bug已经修复,但是一旦您拥有数千个文档,它的性能仍然很糟糕。我发现索引查询的响应时间超过5秒。如果您有多个文档,则无法使用。