


Библиотеки для работы с клиентскими хранилищами. Клиентские хранилища. Технологии будущего. Оптимизация структуры веб-страниц
userData behavior
Flash Local Shared Object
WHATWG DB Backend (openDatabase)
globalStorage и localStorage
Google Gears
Библиотеки для работы с клиентскими хранилищами
Резюме
Итак, мы рассмотрели основные из имеющихся на сегодняшний момент в распоряжении программиста клиентских хранилищ. Такое обилие решений, большинство из которых поддерживаются ограниченным набором браузеров, не могло не привести к появлению специализированных библиотек для работы с клиентскими хранилищами. Не умаляя полезности минимальных знаний о работе каждого хранилища, мы вс? же рекомендуем для доступа к ним использовать одну из готовых библиотек, которые будут рассмотрены ниже.
PersistJS
(http://pablotron.org/?cid=1557 ) - пожалуй, наиболее известная библиотека на этом поприще. Она поддерживает все перечисленные виды хранилищ (правда, Google Gears для IE не поддерживается), но, несмотря на свою известность, обладает рядом существенных недостатков.
Первый недостаток - нет возможности изменить последовательность, в которой PersistJS перебирает методики хранения данных. К примеру, если вы решили поставить localStorage выше Google Gears, а cookie исключить, вам придётся вмешиваться в код библиотеки.
Другая проблема - если библиотека обнаружила, например, хранилище Google Gears, а клиент ответил отказом на запрос разрешения хранения данных, то PersistJS останется в неопределённом положении.
Ещё недоработка - PersistJS не проверяет готовность Flash-ролика и, в том случае, если вы используете это хранилище, есть небольшая вероятность того, что ваш код попытается обратиться к данным ещё до того, как ролик будет загружен. Другая, связанная с Flash-роликом проблема - библиотека не умеет запрашивать дополнительное место для хранения данных, если 100КБ, которые можно использовать без запроса разрешения, исчерпаны.
Неприятно так же, что библиотека позволяет сохранять только текстовые строки, не предоставляя возможности сериализации, впрочем, версия из репозитория умеет представлять сложные объекты в виде JSON.
Впрочем, у библиотеки хороший плюс - небольшой (около 9КБ) размер.
Dojo
(http://www.dojotoolkit.org/ ) поддерживает хранилища Flash, Google Gears, globalStorage (FireFox 2.0) и среду запуска веб-приложений Adobe AIR.
Этот фреймворк лишён недостатков PersistJS, но есть изъян - гигантский размер: версия 1.3.2 занимает 45МБ. Конечно, для работы с хранилищем весь фреймворк не нужен, но даже минимально необходимый набор занимает более 100КБ.
Существует адаптированная версия Dojo Storage, которая называется
SRAX Storage
(http://fullajax.ru/#:download/ ), но она поддерживает только Flash Local Shared Object.
jStore
(http://code.google.com/p/jquery-jstore/ ) - небольшой плагин к jQuery, который поддерживает все рассмотренные хранилища, кроме cookie, обладает умеренным размером (около 15КБ в минимизированном виде) и свободен от недостатков PersistJS.