如何获取当前应用程序使用的总html5存储大小

How to get total html5 storage size used by current application

本文关键字:html5 存储 应用程序 何获取 获取      更新时间:2024-01-21

我需要一种方法来查找应用程序在运行时使用HTML5 sessionStorage/localStorage所占用的总大小。

我不想要基于探查器的方法。

我目前正在做的是-

var data = 0;
for(var v in window.sessionStorage){
 data += window.sessionStorage.getItem(v); 
}
console.log(data);//.length to get char length

然后我将这个值复制粘贴到一个文本文件中,并检查大小。

丑陋,但仍然对我没有帮助。在HTML5 API中有没有一种内置的方式(任何方法)?

谢谢。

否,不跨浏览器。IE有点像,其他人没有。当然,可以计算域上剩余的大小。请参阅以下示例。

仅适用于IE:

var remSpace = window.localStorage.remainingSpace;

对于FF/Chrome/Safari:

 var limit = 1024 * 1024 * 5; // 5 MB
 var remSpace = limit - unescape(encodeURIComponent(JSON.stringify(localStorage))).length;

歌剧:5 MB是标准配置,但由于应用程序需要更多空间,浏览器会增加限制。

我在试图找到自己的解决方案时发现了这个问题,并想分享我的结局,以防对其他人有帮助。

简而言之,当我向localStorage添加一个值时,我将其键放在一个数组中。然后,在向localStorage写入其他内容之前,我循环遍历密钥,并获得它们的长度总和,以确保我没有超过我可以接受的阈值。

如果localStorage大于2Mb(在这种情况下),那么它将从localStorage中删除第一个项,从阵列中删除该项,然后写入新项。

// check the size of localStorage
var localStorageArray = [];
var localStorageSize = 0;
for ( var i=0; i < localStorageArray.length; i++ ) {
    localStorageSize += localStorage.getItem(localStorageArray[i]).length;
}
// save to localStorage if it has not been saved already
if ( !localStorage.getItem(key) ){
    if ( localStorageSize < 2000000 ) {
        localStorage.setItem(key, value);
        localStorageArray.push(key);
    } else {
        localStorage.removeItem(localStorageArray[0]);
        localStorageArray.shift();
        localStorage.setItem(key, value);
        localStorageArray.push(key);
    }
}