2

我将sqlite支持添加到我的Google Chrome扩展中,以存储历史数据。确定HTML5数据库内存使用情况

当创建数据库时,它被设置最大尺寸要求(我用的5MB,在许多例子表明)

我想知道我真的很喜欢使用(例如后多少内存添加1000条记录),了解何时达到5MB限制,并据此采取行动。

Chrome控制台不显示这些数字。 谢谢。

回答

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

+0

@nice回复。 thx共享。 – Dave 2010-10-10 23:49:42

0

我想添加一个建议。

如果它是Chrome扩展,为什么不使用Web SQL存储或索引DB?

http://html5doctor.com/introducing-web-sql-databases/

http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/

来源:http://caniuse.com/

+0

是的,我使用的Web SQL(我写的 “源码”,我认为这是一样的)我认为穆罕默德主要是关于本地存储的,因为它们有相同的限制并且更容易做出这个例子。 – Omiod 2010-10-10 17:29:08

+0

是的,更容易做出示例:) Chrome使用SQLite作为WebStorage和LocalStorage的数据库存储。但他们都适用具有相同的含义。 – 2010-10-10 23:10:00

+0

@UVL。 Web SQL与SQLite不同。一个特定的浏览器或可以使用SQLite作为它的WebSQL,localStorage和IndexedDB。但这是一个实施问题,两者都是不同的事情。这就是为什么我建议你使用API​​版本(因为我认为你使用的是独立实现)。 – Dave 2010-10-10 23:49:23