2

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

但是,在挂起 60 秒后,对 indexedDB 的大量请求都失败并出现错误:“DOMException: Transaction timed out due to inactivity.”。

如果我只是做一个简单的

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 的隐身窗口中,它工作正常。如果我在非隐身窗口中做同样的事情,我会超时。重要的是:如果我将循环大小增加到很大,即使在新的会话中,我也会遇到同样的超时问题。所以感觉有些地方不太对劲。

4

2 回答 2

5

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

于 2016-05-11T19:57:09.457 回答
1

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

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

在桌面上,Firefox 有 50MB 的限制,除非用户当然允许无限存储。在 Chrome 中,它仍然尊重配额,可以在 DevTools > Application > Storage 中进行调整。

(Chrome 指的是 Webkit,因此 Safari、Opera 和 Mobile WebViews 也应该可以工作。)

于 2020-04-29T01:29:17.307 回答