Chrome浏览器的存储限制

时间:2012-06-11 22:57:31

标签: indexeddb

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

6 个答案:

答案 0 :(得分: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请求更多存储空间。

答案 1 :(得分: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); 
} );

答案 2 :(得分:5)

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

根据以上所述,您的问题的答案将是:

  1. IndexedDB(在Chrome浏览器上)可以使用存储而无需请求。 (知道它是从临时存储分配的)
  2. 请求超过TEMPORARY存储限制(50%可用的20%,如上所述)将不会分配任何内容。
  3. 您可以使用Browser Storage Abuser HTML5Rocks文章(引用不同浏览器的结果)中的this工具来确定您正在运行的Chrome上的可用临时存储空间。

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

答案 3 :(得分:4)

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

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

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

  

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

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

答案 4 :(得分:0)

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

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

在Chrome 67中,配额行为已更改,只有a bug report中才真正记录了配额行为。综上所述,当前的配额行为是:

  • 在Chrome 普通模式

    • 对于脱机API (应用缓存,文件系统,IndexedDB,WebSQL):

      如果命中“应该保持可用”值,则一个来源(“站点”)的配额将为零。 “应保持可用”值与在大容量存储上保持空闲的空间有关。从Chrome 67开始,它是“ 2 GiB”和“大容量存储总容量的10%”(source)中的较低值。一旦达到此限制,对临时存储的其他写入将失败,但是临时存储中的现有数据将不会被删除。

      如果尚未达到“应保持可用”值,则配额将为共享池(source)的20%。 (可能)表示“ Chrome已经保存了临时存储中所有数据的20%,加上Chrome可以将所有数据保存到本地存储而不会达到'应该保持可用'的值。”

    • 对于 Web存储API (LocalStorage,SessionStorage等):已修复5 MiB(source);我不知道这是否受到上面记录的“应保持可用”限制的影响。

  • 在Chrome 隐身模式

    • 对于离线API (应用缓存,文件系统,IndexedDB,WebSQL):固定为100 MiB,无论大容量存储(source)上的可用空间如何。
    • 对于 Web存储API (LocalStorage,SessionStorage等):已修复5 MiB(source)。

答案 5 :(得分:-1)

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