HTML5 Local Storage
Local storage (локальное хранилище) — база данных на стороне клиента, содержащая пары ключ-значение. Надеюсь, что в ближайшем будущем эта технология станет стандартом в веб-разработке.
Плюсы локального хранилища:
Плюсы локального хранилища:
- Большой объем хранилища (ограничивается настройками браузера и вашим HDD)
- Данные хранятся на стороне клиента (высокая производительность)
- Не ограничено временем жизни
- IE 8.0+
- Firefox 3.5+
- Safari 4.0+
- Chrome 4.0+
- Opera 10.5+
- iPhone 2.0+
- Android 2.0+
<code>function isLocalStorageAvailable() {
try {
return 'localStorage' in window && window['localStorage'] !== null;
} catch (e) {
return false;
}
}</code>Сохранение данных:<code>localStorage.setItem('foo', 'bar');</code>Извлечение данных:<code>var foo = localStorage.getItem('foo');
alert(foo); //bar</code>Можно использовать объектную нотацию для сохранения и извлечения данных:<code>localStorage['foo'] = 'bar'; var foo = localStorage['foo']; alert(foo); //bar</code>Удаление данных:
<code>localStorage.removeItem('foo'); //удалит элемент объекта
localStorage.clear(); //удалит все элементы</code>Может возникнуть проблема, если мы превысили ограничение размера локального хранилища. Обработаем это при помощи try/catch:<code>try {
localStorage.setItem('foo', 'bar');
} catch (e) {
if (e == QUOTA_EXCEEDED_ERR) {
alert('Локальное хранилище переполнено');
}
}</code>Стоит отметить, что сохранять можно только строковые данные. Иногда требуется сохранять объекты. Ничего не остается как воспользоваться сериализацией:<code>var foo = {1: [1, 2, 3]};
localStorage.setItem('foo', JSON.stringify(foo));
var fooFromLS = JSON.parse(localStorage.getItem('foo'));</code>Небольшой пример как можно использовать локальное хранилище. На сайте есть страница с табами, которые можно перетаскивать. Удобно если после изменения сохранится расстановка для текущего пользователя. «По-серверному» это можно осуществить сохранением позиций для каждого юзера в БД. Естественно, это очень накладно по производительности. А локальное хранилище будет делать это быстро и без участия сервера.
0 комментариев