Я создаю приложение с помощью редактора Bespin и localStorage HTML5. Это хранит все файлы локально и помогает с грамматикой, JSLint использования и некоторыми другими синтаксическими анализаторами для CSS и HTML помочь пользователю.
Я хочу вычислить, сколько из предела localStorage использовалось и сколько на самом деле существует. Действительно ли это возможно сегодня? Я думал для не просто вычислить биты, которые хранятся. Но с другой стороны я не уверен, что больше там, что я не могу измерить меня.
Я не нашел универсального способа получить оставшийся лимит для нужных мне браузеров, но я нашел при достижении предела появляется сообщение об ошибке. Конечно, в каждом браузере все по-разному.
Чтобы добиться максимального результата, я использовал этот небольшой скрипт:
for (var i = 0, data = "m"; i < 40; i++) {
try {
localStorage.setItem("DATA", data);
data = data + data;
} catch(e) {
var storageSize = Math.round(JSON.stringify(localStorage).length / 1024);
console.log("LIMIT REACHED: (" + i + ") " + storageSize + "K");
console.log(e);
break;
}
}
localStorage.removeItem("DATA");
Отсюда я получил следующую информацию:
Google Chrome
Mozilla Firefox
Safari
Internet Explorer, Edge (сообщество)
Мое решение
Пока что мое решение - добавлять дополнительный вызов каждый раз, когда пользователь что-либо сохраняет. И если исключение обнаружено, я бы сказал им, что у них заканчивается емкость хранилища.
Изменить: удалить добавленные данные
Я забыл упомянуть, что для того, чтобы это действительно работало, вам нужно удалить элемент DATA
, который был установлен изначально. Это изменение отражено выше с помощью функции removeItem () .
IE8 для этой цели реализует свойство Остающееся пространство
:
alert(window.localStorage.remainingSpace); // should return 5000000 when empty
К сожалению, похоже, что это недоступно в других браузерах. Однако я не уверен, реализуют ли они что-то подобное.