2012-11-26 150 views
46

我发现articles关于缓存行为,所以我只能假设它没有太大的不同,但我想确保。当localStorage已满时会发生什么?

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

我明白每个浏览器的行为都不尽相同,但我主要对Safari,Chrome和Firefox感兴趣(因为那些是我认为是浏览器的浏览器)。

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

而最重要的是:

  • 可以说我“滥用”的localStorage的和我的网站尝试使用这一切,并在同一页 我暂起来并试图节省更多,我会得到一个警告getItem返回null时发生这种情况或以某种方式保存在内存中?

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

    回答:答案可以发现here

  • 是完全相同的行为可以从sessionStorage的可预期的allegdly应该是一样的吗?

我知道这是一个很大的问题,但我想了解所有的有关的主题,我会心存感激你能回答这个问题的任何部分。

问候。

+0

发生了什么,当你尝试了吗? – kol

+0

那么我没有填补它,但我试图更多的研究之前,以确保我不会犯最初的错误。我不太清楚如何尝试,我发现没有这样的问题,也没有文章,我认为这可能是一个很好的职位。一旦我达到那一点,我会加上我自己的结论,如果这还没有回答。 –

+2

看看这个:http://stackoverflow.com/questions/12508274/does-amplify-store-return-error-or-catch-exception-when-local-storage-limit-exce –

回答

62

首先,一些有用的资源:

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

  • 歌剧:歌剧:配置 - >域配额的localStorage
  • 火狐:about:config中 - > dom.storage。default_quota

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

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

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

如果没有:

  • 的数据不被存储并没有覆盖现有数据。
  • A QUOTA_EXCEEDED_ERR异常被抛出。

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

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

注意的sessionStorage与localStorage的是相同的存储对象的两种实现这样的行为是相似的,错误处理是相同的。

+0

这似乎是一个坚实的答案,谢谢你的时间! –

+0

不客气。抱歉,我没有Safari或IE的信息(我在Linux上)。 – tagawa

+0

如果我理解正确,这是否意味着所有浏览器都具有特定于域的配额限制?或者(可以说)所有域共享5MB内存? – Nis

相关问题