Переменные сессий без применения cookies

Такой инструмент хранения данных как cookies зачастую избегают из-за многих проблем связанных с их использованием - ограниченный размер хранимых данных (4 х 20Kb на один домен), хранить можно только строки, и, кроме того все эти данные добавляются в заголовки запросов браузера, что не способствует производительной работе сайта. Решение этой проблеме я нашел вчера - скрипт sessvars.js способен устанавливать и хранить данные сессий при помощи JavaScript и без использования cookies. Вместо cookies используется свойство window.name, прелесть которого в том, что оно сохраняет свое значение при перезагрузке страниц и может хранить до 2 мегабайт данных. Также как и в cookies здесь можно хранить только строковые данные. Чтобы обойти это ограничение sessvars.js использует преобразователь JSON в строку для сериализации объектных данных.

Скрипт работает во всех основных браузерах: IE 6/7, Firefox 1.5/2/3b5, Safari, Opera 9.

Как использовать

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

<script type="text/javascript" src="sessvars.js"></script>

После этого в нашем распоряжении есть новый объект под названием sessvars, к которому, как и к обычному объекту JavaScript можно добавлять данные. Единственное отличие от обычных объектов это то, что это значение сохраняется при перезагрузке страницы. То есть, если мы добавим на одной странице следующее значение:

sessvars.myObj = {name: "Dima", age: 28}

то на других страницах сайта оно доступно через sessvars.myObj.

Свойствам sessvars можно давать любые имена, кроме $, которое уже задействовано для нескольких полезных функций:

  • sessvars.$.clearMem() - очищает занятую память.
  • sessvars.$.usedMem() - возвращает количество используемой памяти в килобайтах.
  • sessvars.$.usedMemPercent() - количество используемой памяти в процентах.
  • sessvars.$.debug() - показывает окно отладки.

Также имеется свойство sessvars.$.prefs, которое содержит несколько полезных опций, например свойство sessvars.$.prefs.memlimit хранит максимальное количество данных - по умолчанию 2000 килобайт, однако можно изменять для IE 7, Safari или Opera, которые имеют гораздо больший предел хранения данных.

И последняя очень важная деталь - безопасность. Фактически данные переменной window.name могут быть доступны для других скриптов на других доменах, поэтому никогда не храните таким образом секретные данные - пароли, номера кредиток и др.

Демо 1Демо 2 (сайт автора)скачать пример

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

Комментарии на “Переменные сессий без применения cookies”

  1. Kerka:

    так и делаю
    была такая статья на форуме

  2. EgorK:

    Все ничего, но что будет если юзер откроет следующую страницу в новом окне или табе? ;)

  3. admin:

    увы, ничего не будет - новая страница, новые данные ))
    автор обещал поработать над этим

  4. PersistJS - сессии в JavaScript без cookies | JSToolbox - все о JavaScript:

    […] cookiesВ одной из предыдущих статей я написал о скрипте sessvars.js, который позволяет работать с сессиями без cookies, […]

  5. Еще одно применение для window.name | JSToolbox - все о JavaScript:

    […] Это достоинство уже получило применение в скрипте sessvars.js, который используется для реализации механизма […]

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