Pull to refresh

Browser persistence

Reading time 2 min
Views 1.6K
Browser persistence — техника, позволяющая хранить в браузере довольно большие объемы данных, которые в отличие от cookie не отсылаются на сервер при каждом запросе.

Все уже написано до меня, но на хабре никаких более-менее подробных упоминаний не нашел, поэтому написал краткий обзор — как это работает и собрал ссылки для более подробного изучения.

Как это работает


Firefox

В Firefox 2+ реализован стандарт Web Storage спецификации HTML5. Стандарт предусматривает собой хранение данных в объектах localStorage и sessionStorage, которые отличаются областью видимости данных.

Собственно, сохранять и читать данные очень просто — в key-value парах этих объектов (не только в FF но и в остальных браузерах, поддерживающих Web storage):
sessionStorage["name"] = "Вася";
var name = sessionStorage["name"];


В Firefox есть также globalStorage не описаный в спецификации.

Да, localStorage реализован только в FF версий 3.5+.

Ограничение размера данных — 5MB на домен. Почитать про них можно на сайте Mozilla Developer Center.

Internet Explorer

IE — в восьмой версии так же реализован Web Storage.
Размер хранимых данных — до 10MB.

В версиях IE 5-7 есть интерфейс userData behavior. Ограничение данных: 128K на страницу и 1024K на домен.

Safari

Web storage реализован в только в четвертой версии.

Остальные браузеры

В остальных браузерах с этим как-то глухо. Если в Chrome я наше упоминание о том что в dev версиях браузера можно включить поддержку localStorage, то относительно Opera — не нашел вообще никаких упоминаний.

Но все можно исправить, использовав в этих браузерах небольшой flash-ролик в котором задействован интерфейс sharedObjects. То есть, проверили web storage и userData. Не работает? Вставляем flash и используем его.

Ссылки


Готовую к использованию библиотеку, написанную Ильей Кантором можно найти здесь: browserpersistence.ru.

Более подробная статья Ильи Кантора на http://javascript.ru/unsorted/storage.

Статья John Resig (автора jQuery) о DOM Storage: http://ejohn.org/blog/dom-storage/

И еще одна библиотека PersistJS, но ее я еще не пробовал: http://pablotron.org/?cid=1557
Tags:
Hubs:
+43
Comments 20
Comments Comments 20

Articles