当localStorage已满时会发生什么?

我发现有关caching行为的文章 ,所以我只能假设它没有太大的不同,但我想确保。

我已经读了,大多数浏览器有5MB(给或拿)localStorage和我是什么感兴趣的浏览器的行为?

我明白每个浏览器的行为不同,但我主要在Safari浏览器,Chrome浏览器和Firefox浏览器(因为那些我认为是浏览器)。

  • 上面提到的浏览器会不会从我的网站上删除数据,或者会select“最老的”还是这样的?
  • 在这种情况下我的物品会被保存吗?

而最重要的是:

  • 比方说,我滥用localStorage和我的网站试图使用它,并在同一页我填补了,并试图保存更多,我会得到一个警告并会在这种情况下getItem返回null或它以某种方式保存在内存中?

  • 如果我尝试保存大于localStorage大小的项目,会发生什么情况?

    回答:可以在这里find答案

  • sessionStorage的预期行为是否可以预期,这应该是相同的?

我知道这是很多问题,但我试图理解所有相关的主题,我会感谢你的答案的任何部分的问题。

问候。

首先,一些有用的资源:

  • networking存储支持testing – 有一个比较浏览器之间的数据存储配额的表。
  • 简单的localStorage配额testing
  • localStorage浏览器行为摘要
  • W3C规范 – 指示用户代理(如浏览器)应如何行为(localStorage和sessionStorage)。

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

  • Opera:opera:config – > Domain Quota对于localStorage
  • Firefox:about:config – > dom.storage.default_quota

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

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

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

如果不:

  • 数据不被存储,现有的数据不会被覆盖。
  • 抛出QUOTA_EXCEEDED_ERRexception。

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

(Opera略有不同之处在于它显示一个对话框,让用户select增加当前域的存储空间。)

请注意,sessionStorage和localStorage都是同一个Storage对象的实现,所以它们的行为是相似的,error handling是相同的。