JavaScript Web Storage API
Интерфейсы веб APIОписание API
API веб-хранилища предоставляет механизмы, с помощью которых браузеры могут хранить пары "ключ-значение" гораздо более интуитивно понятным способом, чем использование файлов cookie (небольшой фрагмент данных, отправленный веб-сервером и хранимый на компьютере пользователя).
В настоящее время существуют следующие два механизма хранилищ:
- sessionStorage - поддерживает отдельную область хранения для каждого заданного источника, доступную на время сеанса страницы (пока открыт браузер, включая перезагрузку и восстановление страницы).
- localStorage - делает то же самое, но сохраняется даже при закрытии и повторном открытии браузера.
Эти механизмы доступны через свойства объекта Window sessionStorage и localStorage (точнее говоря, в браузерах объект Window реализует объекты WindowLocalStorage и WindowSessionStorage, которые содержат свойства localStorage и sessionStorage). Вызов одного из этих свойств создаст экземпляр объекта Storage, с помощью которого можно устанавливать, извлекать и удалять элементы данных из хранилища.
Для localStorage и sessionStorage для каждого домена используется отдельный объект хранения — они функционируют и управляются отдельно друг от друга.
Обращаю Ваше внимание, что объем веб-хранилища ограничен размером, и может составлять от 5 до 10 мегабайт, в зависимости от производителя браузера. Это значительно больший объем места на диске в сравнении с cookie, которому доступно всего 4 Кбайта.
Интерфейсы Web Storage API
Интерфейс / объект | Описание |
---|---|
Storage | Интерфейс Storage предоставляет доступ к локальному объекту хранения, или объекту хранения текущего сеанса для определенного домена (создавшего объект хранения источника). Он позволяет, например, добавлять, изменять или удалять элементы хранимых данных. |
Window | Интерфейс Window представляет из себя окно, или фрейм в браузере, содержащий документ DOM. API веб-хранилища расширяет объект Window двумя новыми свойствами — Window.sessionStorage и Window.localStorage, которые предоставляет доступ к локальному объекту хранения, или объекту хранения текущего сеанса для определенного домена (создавшего объект хранения источника), а также обработчик события Window.onstorage, который срабатывает, когда веб-хранилище данных обновляется. |
StorageEvent | Событие storage срабатывает на объекте Window документа при изменении объекта хранилища (Storage). |
Приватный просмотр (режим инкогнито)
Большинство современных браузеров поддерживают опцию конфиденциальности "инкогнито", "приватный просмотр", или что-то подобное, что не хранит такие данные, как история и файлы cookie. Это принципиально несовместимо с веб-хранилищем по очевидным причинам, по этой причине поставщики браузеров экспериментируют с различными сценариями устранения этой несовместимости.
Многие браузеры выбрали стратегию, в которой API хранилища по-прежнему доступны и кажутся полностью функциональными, с той большой разницей, что все сохраненные данные стираются после закрытия браузера. Для этих браузеров все еще существуют различные интерпретации того, что должно быть сделано с существующими сохраненными данными (из обычной сессии просмотра). Затем есть некоторые браузеры, например, Safari, которые выбрали такое решение при котором хранилище доступно, но пусто и имеет квоту 0 байт, что фактически делает невозможным запись в него данных.
Разработчики должны знать об этих различных реализациях и учитывать их при разработке веб-сайтов в зависимости от API веб-хранилища.
Интерфейсы веб API