Определение использования памяти базы данных HTML5 - PullRequest
2 голосов
/ 10 октября 2010

Я добавляю поддержку sqlite в мое расширение Google Chrome для хранения исторических данных.

При создании базы данных требуется установить максимальный размер (я использовал 5 МБ, как предлагалось во многих примерах)

Я хотел бы знать, сколько памяти я действительно использую (например, после добавления 1000 записей), чтобы иметь представление о том, когда будет достигнут предел в 5 МБ, и действовать соответственно.

Консоль Chrome не показывает такие цифры. Спасибо.

Ответы [ 2 ]

2 голосов
/ 10 октября 2010

Вы можете рассчитать эти цифры, если хотите. В основном, ограничение по умолчанию для localStorage и webStorage составляет 5 МБ, где имя и значения сохраняются как UTF16, поэтому на самом деле это половина того, что составляет 2,5 МБ с точки зрения сохраненных символов. В 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,5 МБ. Вы можете сделать обратное и посчитать, сколько символов в строке, и это определяет, сколько места у вас есть.

Другой способ сделать это - всегда добавлять «полезную нагрузку» и проверять исключение, если оно существует, если оно существует, то вы знаете, что у вас недостаточно места.

try {
  localStorage['foo'] = 'SOME_DATA';
} catch (e) {
  console.log('LIMIT REACHED! Do something else');
}

Internet Explorer сделал что-то под названием «Остальное пространство», но это не работает в Chrome / Safari: http://msdn.microsoft.com/en-us/library/cc197016(v=VS.85).aspx

0 голосов
/ 10 октября 2010

Я хотел бы добавить предложение.

Если это расширение Chrome, почему бы не использовать хранилище Web SQL или индексированную БД?

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

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

Источник: http://caniuse.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...