确定HTML5数据库内存使用情况

时间:2010-10-10 10:44:22

标签: sqlite html5 google-chrome memory-management google-chrome-extension

我正在为我的Google Chrome扩展程序添加sqlite支持,以存储历史数据。

创建数据库时,需要设置最大大小(我使用5MB,如许多示例所示)

我想知道我真正使用了多少内存(例如在添加1000条记录之后),以了解何时达到5MB限制,并采取相应行动。

Chrome控制台无法显示此类数据。 感谢。

2 个答案:

答案 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/

来源:http://caniuse.com/