2011-11-07 11 views
5

ウェブストレージ用のW3C仕様(これは誤った名前ですが、口語的にはHTML5ローカルストレージと呼ばれます)では、ユーザーエージェントが5MBで推奨されるサイズ制限を適用できます。インターネット上で見つかったさまざまな情報源によると、最新のブラウザーの多くは10MBを提供するIEを除いて、この5MBの制限を使用しています。Web Storageのサイズ制限にはどのように対処できますか?

まず、localStorageとsessionStorageの合計に制限があるのか​​、個別に制限があるのですか。

ここで実際にこれらの制限にどのように対処していますか?特定のブラウザの制限を調べる方法はありますか?異なるブラウザで統計情報を管理するウェブサイトはありますか?ブラウザが制限を超えたときに例外がスローされますか?異なるブラウザでこの例外「クラス」をテストするための確実な方法はありますか?

+1

? –

+1

いいえ、実際はありません。さらに悪いことに、ウェブサイトがストレージの制限を超えようとするとダイアログボックスを表示する主要なブラウザが1つあります(私はどちらを忘れています)。ウェブデベロッパーがこのメッセージをカスタマイズする方法はないので、「このウェブサイトはストレージの上限を超過しようとしています」という非常に悪いユーザーエクスペリエンスがあります。このため私の会社は、ユースケースにローカルストレージを使用せず、javascriptファイルのように見えるURLでデフォルトのブラウザキャッシュメカニズムを使用することにしましたが、実際には動的に生成されたオブジェクト定義のみが含まれていました。 – Kidburla

+0

私はlocalstorageとの会話を最大限に超えないようにモジュールを書いています.4MBを超えると、3MB以下になるまで最も古いエントリを空にします。システムが追加または削除するたびに、各時刻で使用されているバイト数が更新されます。つまり、現在使用されているバイト数をシーク時間big-o 1で取得できます。 –

答えて

2

AFAIKでは、そのサイズを決定する方法として、localStorageオブジェクトがありません。ただし、ストレージの制限を超える量のデータを書き込もうとすると、例外が発生する可能性があります。

http://arty.name/localstorage.html

を見てみましょう。基本的には、このようなtry...catchブロックに書き込み機能をラップすることができます:あなたはこれに対する良い答えを見つけるか

function write(value, name) { 
    try { 
     localStorage.field = value; 
     return true; 
    } catch (e) { 
     return false; 
    } 
} 
+1

こんにちは、私のポストから、私はそれが例外をキャッチすることに気づいた。しかし、その例外が正しい形式であるかどうかテストする方法があるのだろうかと思ったのですか?たとえば、私のブラウザ(Firefox)では例外名は "NS_ERROR_DOM_QUOTA_REACHED"ですが、Firefox固有のものだと私は思っています。私はこれらの種類のものに対処するためのライブラリが必要だと思います!! – Kidburla

+0

また、そのサイトでは、クォータがlocalStorageとsessionStorageの両方に対応しているのか、それとも1つだけかそれとも他のものであるのかは明確ではありませんでした。 – Kidburla

関連する問題