Chrome浏览器的存储限制

问题描述 投票:32回答:6

什么是软限制(用户需要允许超出限制)?什么是硬限制(允许的最大值)。

indexeddb
6个回答
4
投票

警告 - 此信息已过时 - 请参阅下面的other answer

Chrome在达到QUOTA_ERR之前有5mb的软限制。 Here's a MDN reference到那个事实。

spec提到了一个QuotaExceededError,但似乎没有说什么时候它应该抛出。

QuotaExceededError操作失败,因为没有足够的剩余存储空间,或者达到了存储配额,并且用户拒绝为数据库提供更多空间。

我没有听说过硬限制,也没有达到我自己开发中的限制。在你到达之前,表演应该走得很远。


37
投票

经验法则是用户硬盘驱动器上可用空间的6%(编辑2015年7月:10%),如果您的源是使用websql,appcache或文件系统API,则更少。提及5mb的MDN文档已经过时并且已经更新。有关当前政策的详细信息如下:https://developer.chrome.com/apps/offline_storage

注意一些恼人的微妙之处:

  1. indexeddb没有PERSISTENT存储,只有上面关于TEMPORARY的链接中的内容适用。
  2. 一旦你的起源耗尽了它在游泳池中的份额, indexeddb事务将无益地中止,没有真正的指示原因。截至目前,确定缺少配额的唯一方法是使用queryUsageAndQuota来检查剩余的空间。希望在这些情况下,未来版本的chrome将很快正确地填写IDBTransaction.error。 编辑:chrome 26现在可以使用QuotaExceededError正确填充IDBTransaction.error。
  3. 目前没有API为indexeddb请求更多存储空间。

13
投票

使用chrome> dev工具(F12)> console中的以下代码检查配额

// Request storage usage and capacity left
window.webkitStorageInfo.queryUsageAndQuota(webkitStorageInfo.TEMPORARY, 
//the type can be either TEMPORARY or PERSISTENT
function(used, remaining) {
  console.log("Used quota: " + used + ", remaining quota: " + remaining);
}, function(e) {
  console.log('Error', e); 
} );

5
投票

IndexedDB由Google Chrome中的“TEMPORARY”存储提供内存。 Chrome上的临时存储空间的默认配额为可用磁盘空间的50%,其中20%可用于您的离线应用。请求更多临时存储空间配额无效。

基于以上所述,您的问题的答案将是:

  1. IndexedDB(在Chrome浏览器上)可以使用存储而无需请求。 (知道它是从临时存储分配的)
  2. 请求超过TEMPORARY存储限制(50%可用的20%,如上所述)将不会分配任何内容。

您可以使用Browser Storage Abuser工具(在this HTML5Rocks文章中引用,该文章记录了不同浏览器的结果)来确定您正在运行的Chrome上的可用临时存储。

我没有足够的SO声誉来发布更多链接,但上面关于配额研究的HTML5Rocks文章有足够的细节来帮助您确定适当的存储类型(TEMPORARY或PERSISTENT)和适当的存储机制(如果您没有必要将其归零) IndexedDB)可能适合您的应用程序。


0
投票

问题是关于Chrome和标记的IndexedDB。我认为这是关于网站,而不是Chrome扩展程序或应用程序(允许IndexedDB无限存储)。

对于网站,IndexedDB是Chrome临时存储(source)的API。所以问题是关于Chrome中临时存储的配额。

在Chrome 67中,配额行为发生了变化,除a bug report外,这种情况并未真正记录。总的来说,目前的配额行为是:

  • 在Chrome普通模式下 对于脱机API(App Cache,File System,IndexedDB,WebSQL): 如果命中“应保持可用”值,则一个来源(“站点”)的配额将为零。 “应保持可用”值与空间保持大容量存储空间有关。自Chrome 67以来,它是“2 GiB”和“大容量存储总容量的10%”(source)的较低值。达到此限制后,对临时存储的其他写入将失败,但不会删除临时存储中的现有数据。 如果尚未命中“应保持可用”值,则配额将为共享池的20%(source)。这(可能)意味着“已经由Chrome保存的临时存储中的所有数据的20%,以及Chrome可以保存到本地存储的所有数据,而不会达到'应该保持可用'的价值”。 对于Web存储API(LocalStorage,SessionStorage,...):5 MiB已修复(source);我不知道这是否受上述“应保持可用”限制的影响。
  • 在Chrome隐身模式下 对于脱机API(App Cache,File System,IndexedDB,WebSQL):ca。 100 MiB固定,无论大容量存储空间(source)。 对于Web存储API(LocalStorage,SessionStorage,...):5 MiB已修复(source)。

-1
投票

最小或软限制为5MB-浏览器将要求存储数据的权限。最大存储量是硬盘驱动器磁盘的限制,因为所有数据都存储在本地磁盘上。基本上,如果你有20GB的可用存储空间,那么你可以使用IndexedDB的所有存储空间。

© www.soinside.com 2019 - 2024. All rights reserved.