Такой инструмент хранения данных как 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 могут быть доступны для других скриптов на других доменах, поэтому никогда не храните таким образом секретные данные - пароли, номера кредиток и др.