我正在向我的 Google Chrome 扩展添加 sqlite 支持,以存储历史数据。
创建数据库时,需要设置最大大小(我使用了5MB,正如许多示例中建议的那样)
我想知道我实际使用了多少内存(例如添加 1000 条记录后),以了解何时达到 5MB 限制,并采取相应措施。
Chrome 控制台不会透露此类数字。
谢谢。
如果您愿意,您可以计算这些数字。基本上,localStorage 和 webStorage 的默认限制是 5MB,其中名称和值保存为 UTF16,因此就存储字符而言,它实际上是 2.5 MB 的一半。在 webStorage 中,您可以通过在清单中添加“unlimited_storage”来增加它。
同样的事情也适用于 WebStorage,但是您必须遍历所有表并计算出每行有多少个字符。
在 localStorage 中,您可以通过执行填充脚本来测试:
var row = 0;
localStorage.clear();
var populator = function () {
localStorage[row] = '';
var x = '';
for (var i = 0; i < (1024 * 100); i++) {
x += 'A';
}
localStorage[row] = x;
row++;
console.log('Populating row: ' + row);
populator();
}
populator();
上面的代码应该会在第 25 行崩溃,因为空间不足,大约为 2.5MB。您可以执行相反的操作并计算每行有多少个字符,这决定了您有多少空间。
另一种方法是始终添加“有效负载”并检查异常是否存在,如果存在,那么您就知道空间不足。
try {
localStorage['foo'] = 'SOME_DATA';
} catch (e) {
console.log('LIMIT REACHED! Do something else');
}
Internet Explorer 执行了名为“remainingSpace”的操作,但这在 Chrome/Safari 中不起作用:http://msdn.microsoft.com/en-us/library/cc197016(v=VS.85).aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)