29

私は web sql と indexeddb を使用していますが、フォールバックとして btree/localstorage を使用したいと考えています。特定のブラウザ/プラットフォームで localStorage に保存できるデータ量はどれくらいですか?

誰も知らない場合、javascript オブジェクトのサイズを決定する方法はありますか? たとえば、JSON.stringify してから、文字数を掛けますか? 次に、localStorage に書き込み、読み取りを行って値が存在するかどうかを確認するスクリプトを作成し、エラーが発生するか読み取りが停止すると、それがマジック ナンバーになります。

これをテストする必要があります(ie9、ff、safari、chrome、opera、ipadのsafari、Androidのデフォルトブラウザ、androidのdolphin、androidのff、androidのopera)。

js 文字列のサイズをバイト単位で確認する方法を教えていただければ、テストを実行して結果をここに投稿します。

4

2 に答える 2

55

答えていただきありがとうございます。正確な答えを得るために、スクリプトを書くことになりました。大まかな結果は、デスクトップ Webkit、ff、つまり、opera で最低 5MB を取得することです。IE では実際に 1 GB、はい 1 GB のデータを書き込めます。

奇妙なことに、長さ 742 文字の文字列を書き込もうとすると ff がクラッシュしましたが、長さ 1133 文字の文字列を書き込んでしまいました。これはキャッシュがクリアされていたため、何が起こったのかわかりません。

異なる localStorage[locations] に書き込まれる ~1000 文字のオブジェクト

特定の localStorage の場所に指定できる文字列の大きさはどれくらいですか?

これは厄介なスクリプトですが、必要に応じて自分でテストを実行できます。

<!DOCTYPE />
<html>
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        var alphabet = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 123456789 {} +-=*/\'[]<>|&^%$#@!,?.";
        var i = 0;
        var curWord = "";
        var tot = 0;
        localStorage["sameSpot"] = null;
        $("#same").bind("click", function () {
            var write = function () {
                if (!localStorage["sameSpot"])
                    localStorage["sameSpot"] = alphabet[i++];
                else {
                    curWord = alphabet[i++] + localStorage["sameSpot"];
                    localStorage["sameSpot"] = curWord;
                }
                if (i == alphabet.length)
                    i = 0;
                tot++;
                $("#local").html(curWord);
                $("#memory").html(localStorage["sameSpot"]);
                $("p").html("The number of characters written to localStorage[\"sameSpot\"] is: " + tot);
                setTimeout(write, 1);
            };
            write();
        });


        var tot2 = 0;
        var totChars = 0;
        $("#different").bind("click", function () {
            var write = function () {
                var saveObj = {
                    alphabet: alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet + alphabet,
                    date: new Date(),
                    random: Math.random()
                };
                saveObj = JSON.stringify(saveObj);
                totChars += saveObj.length;
                localStorage["t" + tot2] = saveObj;
                $("#local").html(saveObj);
                $("#memory").html(localStorage["t" + tot2]);
                tot2++;
                $("p").html("The number of unique entries made in localStorage[0++] is " + tot2 + " and the total number of characters is: " + totChars + " with an average of " + Math.floor(totChars / tot2) + " characters per record");
                setTimeout(write, 1);
            };
            write();
        });
    });
</script>
<body>
<button id="same">Write Chars To Same Spot</button>
<button id="different">Write Chars To Same Spot</button>
<br />
<p></p>

<textarea rows="50" cols="100" id="memory"></textarea>
<textarea rows="50" cols="100" id="local"></textarea>
</body>
</html>
于 2012-05-21T17:52:24.097 に答える
17

ウィキペディアから:

ストレージ サイズ Web ストレージは、Cookie で利用可能な 4KB (約 1000 分の 1 のスペース) と比較して、はるかに大きなストレージ容量 (Mozilla Firefox[6]、Google Chrome、Opera ではドメインあたり 5MB、Internet Explorer[7] ではストレージ領域あたり 10MB) を提供します。 .

window.localStorage ( http://msdn.microsoft.com/en-us/library/cc197062(v=vs.85).aspxから)

localStorage 属性は、ドメインに永続的なストレージ領域を提供します。Web アプリケーションは、パフォーマンス上の理由から、ドキュメント全体やユーザーのメールボックスなど、約 10 MB のユーザー データをクライアントに保存できます。

于 2012-05-18T14:08:39.233 に答える