PersistJS - сессии в JavaScript без cookies

В одной из предыдущих статей я написал о скрипте sessvars.js, который позволяет работать с сессиями без cookies, используя свойство window.name. Однако у этого скрипта есть одна большая проблема - сессии сохраняются только в том случае, если вы открываете ссылки в том же окне. Если же открывать ссылки в новом окне/табе, то данные сессий там будут не доступны.

Скрипт, который я вам сегодня представлю - PersistJS, также работает с сессиями, однако в отличии от sessvars.js он использует для хранения данных другие “накопители”. Суть в том, что многие браузеры имеют механизмы хранения данных на стороне клиента отличные от cookies. Все они намного проще и лучше последних, могут хранить больше данных, и не передаются в HTTP запросах. Однако, каждый браузер реализует эти механизмы по-своему. В данный момент существуют 4 различных решения для хранения данных на стороне клиента:

  • globalStorage: Firefox 2.0+, Internet Explorer 8
  • localStorage: development WebKit
  • openDatabase: Safari 3.1+
  • userdata: Internet Explorer 5.5+

Помимо вышеперечисленного, работу с сессиями можно организовать при помощи плагинов Adobe Flash и Google Gears, однако они также имеют свои проблемы - Flash может быть отключен или отсутствовать в браузере, а Google Gears пока еще не очень распространен.

PersistJS способен работать с сессиями исользуя собственный API и автоматически определяя, какую технологию использовать для хранения данных. В данный момент он поддерживает следующие механизмы:

  • Flash 8
  • Google Gears
  • localstorage
  • whatwg_db
  • globalstorage
  • UserData (Internet Explorer)
  • cookie: хранение данных при помощи Cookie.

Как видите Cookies также могут использоваться, но только в том случае если другие методы невозможно использовать. Можно также явно запретить использовать Cookies, об этом ниже.

Это пока что первый релиз PersistJS, и протестирован он только на FireFox 2.0, FireFox 3.0rc1, IE7, и Safari 3.1.

Примеры

Создание хранилища данных и сохранение там данных:

// создаем новое хранилище данных
var store = new Persist.Store('My Data Store');

// данные для хранения
var data = "Некая длинная строка ...........";

// сохраняем данные
store.set('saved_data', data);

Получение данных:

// получаем данные и показываем их пользователю
store.get('saved_data', function(ok, val) {
  if (ok)
    alert('saved data = ' + val);
});

Удаление данных:

store.remove('saved_data');

Получение типа хранилища, используемого скриптом для хранения данных:

var info = [
  'Тип: ', Persist.type || 'none',  ', ',
  'Размер: ', (Persist.size < 0) ? 'unknown' : Persist.size
].join('');

alert(info);

Явно запрещаем использовать Cookies скриптом:

Persist.remove('cookie');

Использование

Подключаем скрипт:

<script type='text/javascript' src='persist-min.js'></script>

После загрузки DOM, создаем хранилище данных:

// глобальный объект для доступа к данным
var store;

window.onload = {
	// создаем хранилище данных "My Application"
	store = new Persist.Store('My Application');
}

Имя хранилища данных является обязательным параметром для конструктора. Можно создавать множество таких контейнеров для данных, но все они должны иметь уникальные имена.

Далее добавляем данные, сохраняем как показано в разделе “Примеры”.

смотреть демо.

Добавить в закладки:

Оставить комментарий