【问题标题】:How much data can a browser save in localStorage一个浏览器可以在localStorage中保存多少数据
【发布时间】:2012-05-26 02:49:23
【问题描述】:

我正在使用 web sql 和 indexeddb,但作为备用我想使用 btree/localstorage。在给定的浏览器/平台上,我可以在 localStorage 中保存多少数据?

如果没有人知道有没有办法确定 javascript 对象的大小?例如JSON.stringify 然后乘以字符数?然后我可以编写一个脚本,写入 localStorage 并读取该值是否存在,一旦出现错误或读取停止工作,这就是幻数。

我需要在(ie9、ff、safari、chrome、opera、ipad 上的 safari、androids 默认浏览器、android 上的 dolphin、android 上的 ff、android 上的opera)上对此进行测试。

如果你能帮我弄清楚如何判断 js 字符串的大小(以字节为单位),那么我将运行测试并在此处发布结果。

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    感谢阿莱尔的回答。为了得到准确的答案,我最终写了一个脚本。大致的结果是,您在桌面 webkit、ff 即 opera 上获得至少 5MB 的空间。 IE居然让我写了1GB,没错1GB的数据。

    奇怪的是,ff 在尝试写入长度为 742 个字符的字符串时崩溃了,但它会写入长度为 1133 个字符的字符串,并且缓存已清除,所以我不知道这是怎么回事。

    这是一个凌乱的脚本,但如果你愿意,你可以自己运行测试:

    <!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>
    

    【讨论】:

    • 我看不懂截图,有人能把结果拉到表格里吗?
    • 直接进入图片url可以放大。
    • 2019 年的结果现在还差不多吗?
    【解决方案2】:

    来自维基百科:

    存储大小 Web 存储提供了更大的存储容量(Mozilla Firefox、[6] Google Chrome 和 Opera 中的每个域 5MB,Internet Explorer[7] 中的每个存储区域 10MB)与 4KB(大约少 1000 倍的空间)可用于 cookie 相比。

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

    localStorage 属性为域提供持久存储区域。出于性能原因,它允许 Web 应用程序在客户端存储近 10 MB 的用户数据,例如整个文档或用户的邮箱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 2011-03-20
      • 1970-01-01
      • 2015-08-14
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多