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