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