web-dev-qa-db-ja.com

localStorageがいっぱいになるとどうなりますか?

キャッシュの動作に関して articles を見つけたので、それほど大きな違いはないと仮定することができますが、確認したかったのです。

私はほとんどのブラウザがlocalStorage用に5MB(ギブまたはテイク)を持っていることを読んだことがありますが、ブラウザの動作はどうなるでしょうか?

私はすべてのブラウザーが異なる動作をすることを理解していますが、私は主にSafari、ChromeおよびFirefox(これらはブラウザーとして検討しているものです)に夢中です。

  • 上記のブラウザは私のウェブサイトからデータを削除しますか、それとも「最も古い」またはそのようなものを選択しますか?
  • そのような場合、私のアイテムは保存されますか?

そして最も重要なのは:

  • LocalStorageと私のウェブサイトをすべて「使い果たし」、「同じページでいっぱいにして保存しようとしている」と「悪用」すると、警告が表示されます[ 〜#〜] and [〜#〜]これが発生した場合、または何らかの形でメモリに保存された場合、getItemはnullを返しますか?

  • LocalStorageサイズより大きいアイテムを保存しようとするとどうなりますか?

    Answered:答えが見つかりました ここ

  • おそらく同じであるはずのsessionStorageから同じ正確な動作が期待できますか?

私はこれがたくさんの質問であることを知っていますが、私は主題に関連するすべてを理解しようとしています、あなたが答えることができる質問のどの部分にも感謝します。

よろしく。

58
eric.itzhak

まず、いくつかの有用なリソース:

あなたの質問に対する答えとして、デスクトップブラウザはドメインあたり5MBの初期最大localStorageクォータを持っている傾向があります。これは、場合によってはユーザーが調整できます。

  • Opera:opera:config-> localStorageのドメインクォータ
  • Firefox:about:config-> dom.storage.default_quota

Chromeでは、Operaと同様にlocalStorageデータは開発者ツールを使用してドメインごとに直接編集できますが、ユーザーがこの設定を調整する方法はないようです。

LocalStorageにデータを保存しようとすると、ブラウザは現在のドメインに十分な空き容量があるかどうかを確認します。もし、そうなら:

  • データは保存され、同じキーが既に存在する場合は値が上書きされます。

いいえの場合:

  • データは保存されず、既存のデータは上書きされません。
  • _QUOTA_EXCEEDED_ERR_例外がスローされます。

この場合、getItem(key)は、もしあれば、正常に保存された最後の値を返します。

(Operaは、現在のドメインのストレージスペースを増やす選択肢をユーザーに提供するダイアログボックスを表示するという点で、わずかに異なります。)

SessionStorageとlocalStorageは両方とも同じStorageオブジェクトの実装であるため、それらの動作は類似しており、エラー処理も同じであることに注意してください。

76
tagawa