电子IndexedDb限制?

Tim*_*ter 10 indexeddb electron

在这个Electron问题中,@ zcbenz评论说" 我们在Chrome浏览器中有相同的大小限制,这是'可用磁盘空间的1/3' ".该回复是从2016年初开始的.

我运行了这段代码:

const estimation = await navigator.storage.estimate();
console.log(`Quota: ${estimation.quota}`);
console.log(`Usage: ${estimation.usage}`); 
Run Code Online (Sandbox Code Playgroud)

它告诉我,我有100%的可用磁盘空间作为我的配额,所以我很困惑,找不到比2016年评论更新的东西,这也是电子专用的.

所以我的问题:

  • 这个正式改变了吗?
  • 如果你试图超过这个限制会发生什么(假设它不是真正100%的可用空间)?
  • Electron/Chromium会驱逐你的数据吗?

---电子v3.0.4

谢谢!

TTE

Wal*_*ale 1

2019 年,我可以向您保证,您现在可以完全控制您的 indexdb 数据。
根据 Google 的这篇文章: https: //developers.google.com/web/updates/2017/08/estimating-available-storage-space
上面的代码应返回正确的配额大小。
但除此之外,调用此代码现在可以使您的数据无法被“驱逐”

if (navigator.storage && navigator.storage.persist)
  navigator.storage.persist().then(function(persistent) {
    if (persistent)
      console.log("Storage will not be cleared except by explicit user action");
    else
      console.log("Storage may be cleared by the UA under storage pressure.");
  });
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/API/StorageManager/persist

  • [2/2] 您引用的文章中的这一行也涉及到:“如果 Web 应用程序尝试存储(例如使用 IndexedDB 或缓存存储 API)数据,该数据足够大以使给定源超过其可用配额,请求将失败并出现 QuotaExceededError 异常。” 最后,调用 persist 将使我的数据不被驱逐,但这对解决我能够存储多少数据的配额问题没有帮助。由于一年多来显然没有明确的答案,我计划尝试对此进行测试并报告我的发现。 (3认同)
  • 感谢您的插话。不幸的是,这并不能解决问题。您引用的文章写于 2017 年。本文最后更新于 2019 年,与 2017 年文章中的内容相矛盾:https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria#Storage_limits。除其他事项外,这就是导致我(显然也是其他人)困惑的原因。[1/2] (2认同)