我正在为我的Google Chrome扩展程序添加sqlite支持,以存储历史数据。
创建数据库时,需要设置最大大小(我使用5MB,如许多示例所示)
我想知道我真正使用了多少内存(例如在添加1000条记录之后),以了解何时达到5MB限制,并采取相应行动。
Chrome控制台无法显示此类数据。 感谢。
答案 0 :(得分:2)
如果您愿意,可以计算这些数字。基本上,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
答案 1 :(得分:0)
我想添加一个建议。
如果是Chrome扩展程序,为什么不使用Web SQL存储或索引数据库?
http://html5doctor.com/introducing-web-sql-databases/
http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/