如何获取当前应用程序使用的总html5存储大小
How to get total html5 storage size used by current application
我需要一种方法来查找应用程序在运行时使用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);
}
}
相关文章:
- 在页面卸载时写入HTML5 FileSystem API存储
- 通过phonegap中的电子邮件发送存储在html5 localStorage中的信息
- 使用HTML5 JS框架进行本地存储
- 移动设备上本地存储(html5)的安全性
- Html5 Web 存储未在第二页中显示数据
- HTML5 本地存储作为缓存和单个资产请求
- 如何将WordPress帖子ID传递到HTML5本地存储
- 存储在HTML5存储中的引导崩溃的当前状态
- 如何将jQuery克隆的文本输入保存到cookie或html5存储中
- asp.net和html5网络存储
- 无法使用HTML5 Web存储保存布尔值的解决方法
- Html5存储本地存储数据库文件
- 如何获取当前应用程序使用的总html5存储大小
- 面临着将数据从HTML5存储存储到应用程序数据库的困难
- HTML5存储不工作
- 从HTML5存储打开PDF
- 使用javascript和html5存储搜索大量文本
- 更好的页面间数据传递方式:HTML5存储vs Angular服务
- HTML5存储的ul列表
- 将PNG画布图像保存到HTML5存储(JAVASCRIPT)