localStorage已满时会发生什么?

时间:2012-11-26 15:04:33

标签: html5 firefox google-chrome safari local-storage

我找到了关于缓存行为的articles,所以我只能假设它没有太大的不同,但我想确定。

我已经读过大多数浏览器都有5MB(赠送或接受)localStorage,我对浏览器的行为感兴趣吗?

我理解每个浏览器的行为都不同但我主要在Safari,Chrome和Firefox中感兴趣(因为我认为这些是浏览器)。

  • 上面提到的浏览器会从我的网站上删除数据,还是会选择“最老的”或类似的东西?
  • 在这种情况下我的项目会被保存吗?

最重要的是:

  • 让我说“滥用”localStorage和我的网站尝试全部使用它,并在同一页面 我正在填写并试图保存更多,我会收到警告 getItem会在发生这种情况时返回null还是以某种方式保存在内存中?

  • 如果我尝试保存的项目大于localStorage大小会怎样?

    已回答:可以找到答案here

  • 对于sessionStorage,可以预期同样的确切行为应该是相同的吗?

我知道这有很多问题,但我正在努力理解与该主题相关的所有问题,我会感谢你能回答的问题的任何部分。

问候。

1 个答案:

答案 0 :(得分:73)

首先,一些有用的资源:

在回答您的问题时,桌面浏览器的每个域的初始最大localStorage配额往往为5MB。在某些情况下,用户可以对此进行调整:

  • Opera:opera:config - > localStorage的域名配额
  • Firefox:about:config - > dom.storage.default_quota

在Chrome中,用户似乎没有办法调整此设置,尽管像Opera一样,可以使用开发人员工具直接在每个域中编辑localStorage数据。

当您尝试在localStorage中存储数据时,浏览器会检查当前域是否有足够的剩余空间。 如果是的话:

  • 存储数据,如果已存在相同的密钥,则覆盖值。

如果不是:

  • 不存储数据,也不会覆盖现有数据。
  • 抛出QUOTA_EXCEEDED_ERR个异常。

在这种情况下,getItem(key)将返回成功存储的最后一个值(如果有)。

(Opera略有不同,它显示一个对话框,让用户可以选择增加当前域的存储空间。)

请注意,sessionStorage和localStorage都是同一个Storage对象的实现,因此它们的行为相似,并且错误处理是相同的。