Edge/Safari是否有Indexeddb大小限制?

11

目前正在研究各种浏览器的indexeddb限制。发现Chrome没有硬性限制,但需要授权 (来源),Firefox是本地存储的50% (来源),但无法找到Edge或Safari的任何信息。

我尝试使用Edge,并发现它没有IE设置的限制:每个域500MB (来源)

不幸的是,在Edge上没有navigator.storage.estimate()的功能 https://developer.mozilla.org/en-US/docs/Web/API/StorageManager/estimate

有没有人对Edge或Safari在这方面有经验?

5个回答

10

Microsoft Edge的IndexedDB限制是全局最大值的20%,类似于Firefox和Chrome:

它取决于设备和您使用的Edge版本。最新版本类似于Chrome / FF,并具有以下每个域的限制-每个域可以占用全局限制的20%(适用于所有域):

IndexedDB Size Table

来源:https://twitter.com/gregwhitworth/status/1020391736974094336

因此,每个域可以增长多大取决于硬盘容量大小。


根据https://developers.google.com/web/fundamentals/instant-and-offline/web-storage/offline-for-pwa,桌面版Safari的IndexedDB限制是无限制的。
然而,在移动版Safari中,应用程序最多可以使用50MB,而桌面版Safari允许无限制的存储(并在5MB后提示)。
然而,Safari在2018年11月首次跟踪实施了新的IndexedDB限制:
如果可用磁盘空间的大小超过1 GB,则默认限制为500 MB;否则为可用磁盘空间的一半。请参见WebKit更改跟踪器
另请参见https://bugs.webkit.org/show_bug.cgi?id=190598

感谢您的回答。正如我在问题中提到的,500MB 的限制是针对 Internet Explorer 而不是 Edge。我测试了 Edge,能够将超过 800MB 的随机数据保存在 Indexeddb 中,没有任何问题。 - Sam
@Sam是跨多个域还是只限于一个域?如果是前者,那么上面的链接已经过时了,最好让微软知道。无论如何,我可以尝试联系Edge团队的一些人,看看他们有什么说法。 - TylerH
只有一个域名。我在本地主机上,添加了每个大小约为25MB的条目,直到达到20个条目。每个条目都包含随机数据。 - Sam
我认为这对于移动版Safari不正确,请参见https://trac.webkit.org/changeset/237700/webkit/。 - nullability
@nullability 谢谢,我已经更新了帖子以反映Safari上的新实现。 - TylerH

7

目前来看,Safari的文档不太充分,因此我想分享一下我最近在Safari移动版(11.4)/ IndexedDB存储限制方面的经验。

简而言之,50MB的配额不适用于Safari移动版(11.4)中的IndexedDB存储。

最初,我以为所有离线存储方法(本地存储+缓存+会话+IndexedDB+WebSQL+Cookies)的组合总和有一个50MB硬限制。

我从网络上下载了180MB的数据,并将其直接倒入IndexedDB(浏览器报告IndexedDB消耗了98MB——这里可能有某种内部压缩),Safari(移动版11.4)愉快地将其接受到IndexedDB中。

50MB的限制似乎仅适用于本地/缓存存储(可能还有其他),而不是IndexedDB——我猜这里适用于卷%配额。

顺带一提:不要试图使用LZ-string或类似工具压缩内容以节省IndexedDB中的空间——浏览器的内部压缩实现意味着它要么没有任何影响,要么实际上会增加消耗!


你确定数据被压缩了,而不是被覆盖了吗? - fgilio
太棒了,谢谢!以下是更多信息,以防有人感兴趣 https://love2dev.com/blog/what-is-the-service-worker-cache-storage-limit/ - fgilio

2
截至2020年10月19日,接受的答案似乎可以通过示例进行反驳,因为我刚刚使用indexedDB在Chrome和Edge(最新版本)中加载了30G。我每次加载1G数据,并在每次迭代中使用数百个对象,以便两个浏览器有充分的机会反对,但他们没有这样做。
这些数据仍然可以在浏览器重新启动后保持持久性并可用。根据接受的答案,我应该被限制为4G(20%的20G,因为我的硬盘是500G或“>128GB”)。

1
在 iPadOS 14.5.1 的 Safari 中,一个网站可以使用高达 2GB 的 IndexedDB。

请提供该主张的来源链接。 - Aerodynamic

0

关于 SAFARI 没有太多可说的,但对于 MS Edge,上面第一个答案中显示的表格与 MS EDGE 提供的文档一致,如果您尝试 MS Edge 版本 38,则准确无误。对于我在 ASUS 平板电脑 p027 上安装的 MS Edge 版本 42,我可以确认限制和限制与 Chrome 的缓存存储 API 相同。根据 MDN https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota,您可以查询和请求存储使用情况和配额信息。这是一种实验性技术,但可以给出足够接近的估计,此属性支持 MS EDGE 42 版本(至少在上述选项卡上,我没有在我的机器/台式机/笔记本电脑上安装 MS Edge 42,因为您不能在不更新 Windows 自身的情况下安装/更新它!)... 希望这部分信息对您有所帮助,如果您找到更好的信息,请与我们分享。干杯:)


顺便说一句,Safari和Edge现在已经认真对待这个问题,并将其列为开发优先事项。此外,Safari 12或更高版本至少支持在移动设备上以文本/图像的形式支持PWA,最多可达50MB,但不支持视频。


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