2012-11-26 295 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

相關問題