IE10中IndexedDB的存储限制是多少?

7
我们正在构建一个Web应用程序,将许多文件作为blob存储在indexedDB中。如果用户最大程度地使用我们的应用程序,我们可以在indexeddb中存储多达15GB的文件。

我们在IE10上遇到了问题,我强烈怀疑这是配额问题。

成功保存一些文件后,对store.put(data, key);的新调用永远不会结束。

基本上,该函数将被调用,但不会调用任何成功事件或错误事件。

如果我查看IE 10的IndexedDB文件夹,我会看到一些看起来像临时文件(每个512 kB)被创建并无限删除。

当查看“缓存和数据库”参数窗口时,我看到我的站点数据库已达到250 MB

进一步查看后,我找到了这篇博客文章http://msdnrss.thecoderblogs.com/2012/12/using-html5javascript-in-windows-store-apps-data-access-and-storage-mechanism-ii/,其中提到Windows Store应用的存储限制为250 MB。

虽然我没有使用任何Windows Store机制,但我认为我可能会受到同样的任意限制。

所以,我的问题是:

  • 有没有办法绕过这个限制?当达到250 MB时,用户被要求允许超过10 MB的限制,但我没有看到任何问题弹出到用户面前。

  • 除了IE10,还有其他存储超过250 MB数据的方法吗?

谢谢,我会接受任何线索。


我知道这是一个老问题,但你是否找到了解决IE在达到配额时不触发任何成功或错误处理程序的方法?我正在使用indexedDB来缓存大量数据。当达到限制时,进程会挂起,没有错误或成功回调。这使得在缓存变满时实现“LRU”样式缓存非常困难。 - ste2425
忽略我上一条评论,太晚编辑了。IE 不会锁死,但会触发 onabort 处理程序而不是错误处理程序。 - ste2425
1个回答

5

很抱歉,我觉得你做不到。提供存储限制并要求用户允许更多空间是浏览器厂商的责任。因此,我认为第一个选项不适用。

我知道用户可以允许网站超过给定的限制(Internet选项>常规>浏览历史记录>设置>缓存和数据库),但我不知道这是否会覆盖250MB的限制。可能这是一个硬编码的限制,你不能超过它。

这个限制与域名绑定,意味着你不能通过创建多个数据库来解决它。唯一的解决方法是在多个域上存储,但在这种情况下,你不能跨域访问它们。另外据我所见,250MB的限制将针对IndexedDB API和File API的结合。


2
我很担心会出现这样的情况。如果用户在“当网站缓存或数据库超过时通知我”中设置了高于250的值,那么我们将能够达到该限制。然而,当用户点击“确定”允许网站超过该限制时,同样的错误(无限后台进程)将出现。不幸的是,我们无法将限制设置得高于999 MB(该死的微软,为什么你总认为自己比用户聪明)。 - Thomas
1
另一方面,为什么你想要在客户端存储那么多的数据呢?也许你需要重新设计你现在使用的概念。我读过一篇文章指出,indexeddb API 在 250mb 点是很有趣的。超过这个点它会失去性能... - Kristof Degrave
5
如果你正在撰写一个HTML5应用程序而不是传统的桌面应用程序,出于与任何传统桌面应用程序当前保存大量数据到硬盘的原因相同,你可能希望将250 MB的数据保存在IndexedDB中。例如,作为一项爱好,我正在开发一个完全客户端的游戏,它可以生成超过100 MB的IndexedDB数据库(理论上,如果游戏进行足够长的时间,它们可以无限制地增长,但我还没有测试超过100 MB),并且在我的非常不科学的测试中,我没有遇到性能问题。 - dumbmatter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接