IndexedDB 中的最大项目大小

发布于 2024-11-02 01:34:24 字数 101 浏览 7 评论 0原文

我正在开发一个简单的 Web 实用程序,它利用 HTML5 的 IndexedDB(类似于键值数据库)功能。

我一直在寻找,但无法知道:我可以在物品中存储的最大尺寸是多少?

I'm working on a simple web utility that makes use of IndexedDB (similar to a key-value DB) feature of HTML5.

I was looking for but I was unable to know: what is the maximum size I can store in an item?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

呆头 2024-11-09 01:34:24

我认为单个项目的大小没有具体限制,只有全局限制。

自最初编写此答案以来,有关全局限制的规则已发生变化。 最新文档位于 MDN - 根据可用磁盘空间,“组”限制(对于给定域,包括其所有子域)范围可以为 10 MB到 2 GB。


旧的答案 - 随着 Firefox 38 (2015-05) 的发布而废弃,删除了 dom.indexedDB.warningQuota

来自 mbrubeck at support.mozilla.com(我已经替换了他的链接)随 perma 版本提供):

默认情况下,在 Firefox 4 中,站点最多可以使用 50MB 的 IndexedDB 存储。如果尝试使用超过 50MB,Firefox 将请求用户许可:http://mxr.mozilla.org/mozilla-central/source/modules/libpref/src/init/all.js#101

在移动设备版 Firefox(Google Android 和 Nokia Maemo)中,如果网站尝试使用超过 5MB 的空间,Firefox 将请求许可:http://mxr.mozilla.org/mozilla-central/source/mobile/app/mobile.js#571
[...]

如果用户授予网站超过 50 MB IndexedDB 配额的权限,那么据我所知 Firefox 不会施加任何更多限制。 IndexedDB 数据库大小的唯一限制是用户的磁盘空间和操作系统。

localStorage 配额为 5000KB,网站无法请求浏览器允许在 localStorage 中存储超过该数量的数据。

I don't think there's a specific limit for a size of a single item, only a global limit.

The rules regarding the global limit have changed since this answer was originally written. The up-to-date docs are on MDN - depending on the available disk space, the "group" limit (for the given domain, including all of its subdomains) can range from 10 MB to 2 GB.


The older answer - obsoleted with the release of Firefox 38 (2015-05), which removed dom.indexedDB.warningQuota:

From an answer by mbrubeck at support.mozilla.com (I've replaced the links he provided with perma-versions):

By default in Firefox 4, a site can use up to 50MB of IndexedDB storage. If it tries to use more than 50MB, Firefox will ask the user for permission: http://mxr.mozilla.org/mozilla-central/source/modules/libpref/src/init/all.js#101

In Firefox for mobile devices (Google Android and Nokia Maemo), Firefox will ask for permission if a site tries to use more than 5MB: http://mxr.mozilla.org/mozilla-central/source/mobile/app/mobile.js#571
[...]

If the user grants permission for a site to exceed the 50 MB IndexedDB quota, then as far as I know Firefox does not impose any more limits. The only limits on the size of the IndexedDB database will be the user's disk space and operating system.

The localStorage quota is 5000KB, and there is no way for a web site to ask the browser for permission to store more than that amount in localStorage.

酒几许 2024-11-09 01:34:24

对于使用现代浏览器的普通网站,您无需担心 indexedDB 中的可用存储空间,因为它要高得多。

最大存储大小取决于两个因素:浏览器磁盘空间

因此,Chrome 和大多数基于 chromium 的浏览器允许使用 80% 的磁盘空间,其中每个源可以使用 75% 的磁盘空间。这意味着,
如果您有 100GB 的磁盘空间,则 80GB 可用于在 indexedDB 中存储数据,其中 60GB 可供单源使用。

此外,Firefox 允许每个源存储 2GB 数据,Safari 允许每个源存储 1GB 数据。

您可以通过以下方式检查可用空间和已用空间的总空间:

const quota = await navigator.storage.estimate();
const totalSpace = quota.quota;
const usedSpace = quota.usage;

For a normal website using modern browsers, you don't need to worry about the available storage in indexedDB as it is way higher.

Maximum storage size depends on 2 things, Browser and Disk space.

So, Chrome and most of the chromium-based browsers allows 80% of the disk space to be used and from that 75% can be used by each origin. That means,
If you have a disk space of 100GB then 80GB can be used to store data in indexedDB and from that 60GB can be used by single origin.

Also, Firefox allows 2GB data to be stored by each origin and Safari allows 1GB per origin.

You can check the total space available and used space by-

const quota = await navigator.storage.estimate();
const totalSpace = quota.quota;
const usedSpace = quota.usage;
叹梦 2024-11-09 01:34:24

添加到 Nickolay 答案,以下是 Chrome 和 IE

Chrome(Desktop) 中 IndexedDB 容量的描述

  • :默认情况下,对于 Web 应用程序,chrome 在使用 indexedDB 存储数据时不会提示用户API。它使用共享池的概念,以下是完整说明 - Chrome HTML5 离线存储

  • Android 版 Chrome:找不到任何说明配额的官方链接。但根据我的经验,我在没有任何提示的情况下保存了 300 MB 的数据。行为很可能与桌面 Chrome 相同。

  • Internet Explorer 10:默认情况下,系统会提示用户提供 10 MB 的存储空间。默认情况下,每个域 250 MB 是硬限制,但用户可以配置自己的限制,直至 1 GB。

Adding to Nickolay answers, Here is the description of IndexedDB capacity in Chrome and IE

  • Chrome(Desktop) : By default, For Web-apps chrome doesn't prompt the user while storing data using indexedDB API. It uses the concept of shared pool, here is the complete description - Chrome HTML5 Offline Storage

  • Chrome for Android : Couldn't find any official link for stating quota. But from my experience, i have saved 300 MB of data without any prompts. Most probably same behavior as Desktop Chrome.

  • Internet Explorer 10 : By default , user is prompted for storage at 10 MB. 250 MB per domain is the hard limit by default, however user can configure their own limits till 1 GB.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文