indexedDB可以用完空间吗?

时间:2016-05-11 19:12:06

标签: google-chrome indexeddb blink localforage

我将localforage与indexedDB驱动程序一起使用。我的indexedDB商店相当大,但我的印象是indexedDB从来没有真正耗尽空间,它只是过期旧内容。

但是,对indexedDB的大量请求失败并出现错误:' DOMException:由于不活动而导致事务超时。',挂起60秒后。

如果我只是做一个简单的

function testWrite(n) {
  localforage.setItem(`test:${n}`, Math.random().toString(16).slice(2))
  .then((v) => console.log(x))
  .catch((err)=>console.log(err))
}
for (var x = 0; x < 10; x++) {
  testWrite(x)
}

在指向我的webapp的隐身窗口中,它运行正常。如果我在非隐身窗口中执行相同操作,则会收到超时。重要的是:如果我将循环大小增加到一个大的,即使在一个新的会话中,我也会遇到相同的超时问题。所以感觉就像在某个地方有一些不太正确的门槛。

2 个答案:

答案 0 :(得分:5)

单个数据库项目的大小没有任何限制,但在某些情况下,每个IndexedDB数据库的总大小都有限制。此限制(以及用户界面断言的方式)因浏览器而异:https://www.raymondcamden.com/2015/04/17/indexeddb-and-limits/

答案 1 :(得分:1)

根据:https://www.html5rocks.com/en/tutorials/offline/quota-research/,它有所不同。

在移动设备上,Firefox的限制为5MB,但是,用户可以无限使用存储空间,而在Chrome浏览器中,它可以存储数据直至指定的配额(可以在“设置”中进行调整)。

在台式机上,Firefox的限制为50MB,除非用户当然允许无限的存储空间。在Chrome中,它仍然遵守配额,可以在DevTools>应用程序>存储中对其进行调整。

(用Chrome浏览器,我的意思是Webkit,因此Safari,Opera和Mobile WebView也应该起作用。)