HTML5 LocalStorage:我还剩下多少空间?

Posted

技术标签:

【中文标题】HTML5 LocalStorage:我还剩下多少空间?【英文标题】:HTML5 LocalStorage: How Much Space Do I Have Left? 【发布时间】:2011-07-08 12:46:25 【问题描述】:

知道如何检查 html5 本地存储数据存储中的剩余存储空间吗?

【问题讨论】:

Luis R 的未缩短链接:***.com/questions/3027142/… @Zan:我编辑了 Luis 的答案以取消缩短 URL,感谢您的提醒。 【参考方案1】:

默认的localStorage分配大小是:5Mb

 var allocated = 5;
    var total = 0;
    for(var x in localStorage)  
        var amount = (localStorage[x].length * 2) / 1024 / 1024;  
        total += amount;  
    
    var remaining = allocated - total;
    console.log( "Used: " + total + " MB");
    console.log( "Remaining: " + remaining + " MB");

【讨论】:

这不完全取决于字符编码吗?这假设每个字符是 2 个字节。【参考方案2】:

您可以在检测到浏览器后实现“名义限制”查找表,并从中减去 localStorage 中已有的键值对大小。

【讨论】:

@PederRice 如果我现在不是太忙,我会编写一些代码,但我的基本想法是,如果您知道用户正在运行例如 Chrome(我已经过去使用了 this 的改编版),那么您将查找 LUT 上的限制(在这种情况下,是一个将浏览器版本映射到存储限制的对象),它将是 5MB(除非它是一个扩展并且没有限制localStorage 权限),然后您将测量您已经拥有的内容(不过,如果字符串是 UTF-8,可能将字符串的大小相加可能会很幼稚)并从总数中减去。 顺便说一下你可能想知道IE8支持localStorage.remainingSpace【参考方案3】:

默认为 5 兆字节。 如果存储超过 5 兆字节,它将抛出“QUOTA_EXCEEDED_ERR”异常。

【讨论】:

这取决于浏览器。 5MB 很常见,但 2.5MB 和无限制也是如此:dev-test.nemikor.com/web-storage/support-test【参考方案4】:

我不知道这是否有帮助,但你可以检查它是否已满。

“QUOTA_EXCEEDED_ERR”是超过 5 MB 的存储配额时将引发的异常。

和this other answer 可能相关。

【讨论】:

为什么要缩小网址? *** 无法检测到链接以将其放入右侧的链接问题中。

以上是关于HTML5 LocalStorage:我还剩下多少空间?的主要内容,如果未能解决你的问题,请参考以下文章

如何找到localStorage的大小

html5 localStorage(本地存储)

[html5]localStorage的原理和HTML5本地存储安全性

html5 localstorage 怎么取存储条数

HTML5 LocalStorage:检查密钥是不是存在[重复]

android html5 localstorage某手机从localstorage中取不到数据