Веб-хранилище - Web storage
HTML |
---|
Сравнения |
веб-хранилище, иногда известный как DOM-хранилище (Объектная модель документа хранилище), обеспечивает веб-приложения с методами и протоколами для хранения данных на стороне клиента. Веб-хранилище поддерживает настойчивый хранилище данных, подобное печенье но со значительно увеличенной емкостью[1] и никакой информации, хранящейся в Заголовок HTTP-запроса.[2] Существует два основных типа веб-хранилищ: локальное хранилище и хранилище сеансов, поведение которых аналогично постоянные куки и сеансовые куки соответственно. Веб-хранилище стандартизировано Консорциум World Wide Web (W3C)[3] и WHATWG.[4] Все основные браузеры поддерживают его.
Функции
Интернет-хранилище отличается от файлов cookie некоторыми ключевыми особенностями.
- Цель
- Файлы cookie предназначены для связи с серверами; они автоматически добавляются ко всем запросам и могут быть доступны как на стороне сервера, так и на стороне клиента. Интернет-хранилище находится исключительно в ведении клиентские сценарии. Данные веб-хранилища не передаются автоматически на сервер в каждом HTTP-запросе, и веб-сервер не может напрямую писать в веб-хранилище. Однако любой из этих эффектов может быть достигнут с помощью явных клиентских скриптов, позволяющих точно настроить желаемое взаимодействие с сервером.
- Размер хранилища
- Файлы cookie ограничены 4 килобайтами. Веб-хранилище обеспечивает гораздо большую емкость хранилища:
- Локальное и сессионное хранилище
- Веб-хранилище предлагает две разные области хранения - локальное хранилище и хранилище сеансов, которые различаются по объему и сроку службы. Данные, помещаемые в локальное хранилище, относятся к источнику - комбинация протокола, имени хоста и номера порта, как определено в политика одного происхождения. Данные доступны для всех скриптов, загружаемых со страниц из того же источника, который ранее хранил данные, и сохраняются после закрытия браузера. Таким образом, веб-хранилище не страдает от проблем со слабой целостностью и конфиденциальностью файлов cookie, описанных в RFC 6265 разделы 8.5 и 8.6. Хранение сеансов является как источником, так и экземпляром (для каждого окна или вкладки) и ограничено временем жизни экземпляра. Хранилище сеансов предназначено для того, чтобы отдельные экземпляры одного и того же веб-приложения могли работать в разных окнах, не мешая друг другу, - вариант использования, который плохо поддерживается файлами cookie.[11]
- Интерфейс и модель данных
- Веб-хранилище обеспечивает лучший программный интерфейс, чем файлы cookie, потому что оно предоставляет ассоциативный массив модель данных где ключи и значения оба струны. Дополнительный API для доступа структурированные данные рассматривается рабочей группой W3C по веб-приложениям.[12]
использование
Браузеры, поддерживающие веб-хранилище, имеют глобальные объекты sessionStorage
и localStorage
объявлен на уровне окна. Следующее JavaScript в этих браузерах можно использовать код для запуска поведения веб-хранилища:
// Сохраняем значение в браузере на время сеансаsessionStorage.setItem('ключ', 'ценить');// Получить значение (удаляется при закрытии и повторном открытии браузера) ...тревога(sessionStorage.getItem('ключ'));// Сохраняем значение в браузере сверх продолжительности сеансаlocalStorage.setItem('ключ', 'ценить');// Получить значение (сохраняется даже после закрытия и повторного открытия браузера)тревога(localStorage.getItem('ключ'));
Только строки могут быть сохранены через Storage API.[13] Попытка сохранить другой тип данных приведет к автоматическому преобразованию в строку в большинстве браузеров. Преобразование в JSON тем не менее, позволяет эффективно хранить объекты JavaScript.
// Сохраняем объект вместо строкиlocalStorage.setItem('ключ', {имя: 'ценить'});тревога(тип localStorage.getItem('ключ')); // нить// Сохраняем целое число вместо строкиlocalStorage.setItem('ключ', 1);тревога(тип localStorage.getItem('ключ')); // нить// Сохраняем объект с помощью JSONlocalStorage.setItem('ключ', JSON.стягивать({имя: 'ценить'}));тревога(JSON.разбирать(localStorage.getItem('ключ')).имя); // ценить
Номенклатура
Проект W3C называется «Веб-хранилище». «Хранилище DOM» также было широко используемым названием, хотя оно становится все реже; например, веб-статьи «Хранилище DOM» на сайтах разработчиков Mozilla и Microsoft были заменены статьями «Веб-хранилище».[14][15][16][17]
"DOM" в хранилище DOM буквально не относится к Объектная модель документа. Согласно W3C, «термин DOM используется для обозначения набора API, доступного для скриптов в веб-приложениях, и не обязательно подразумевает существование фактического объекта Document ...»[18]
Управление веб-хранилищем
Хранение объектов веб-хранилища включено по умолчанию в текущих версиях всех поддерживаемых веб-браузеров, при этом поставщики браузеров предоставляют пользователям способы включить или отключить веб-хранилище или очистить «кеш» веб-хранилища. Аналогичные средства управления веб-хранилищем также доступны через сторонние организации. расширения браузера. Каждый браузер по-разному хранит объекты веб-хранилища:
- Fire Fox сохраняет объекты веб-хранилища в SQLite файл называется
webappsstore.sqlite
в папке профиля пользователя. - Гугл Хром записывает данные веб-хранилища в SQLite файл в профиле пользователя. Подпапка, содержащая этот файл: "
AppDataLocalGoogleChromeUser DataDefaultLocal Storage
" на Windows, и "~ / Библиотека / Поддержка приложений / Google / Chrome / По умолчанию / Локальное хранилище
" на macOS. - Опера веб-хранилище находится в любом "
AppDataRoamingOperaOperasessionsautosave.win
" или же "AppDataLocalOperaOperapstorage
"в зависимости от версии Opera. - Internet Explorer веб-хранилище "
AppDataLocalLowMicrosoftInternet ExplorerDOMStorage
".
Смотрите также
Рекомендации
- ^ Веб-хранилище Opera, 2011 г. http://dev.opera.com/articles/view/web-storage/
- ^ AndyHume.net, 2011 г. http://blog.andyhume.net/localstorage-is-not-cookies
- ^ Веб-хранилище. W3.org. Проверено 12 июня 2011.
- ^ HTML Living Standard 11 Веб-хранилище
- ^ https://dev.opera.com/articles/web-storage/
- ^ https://www.html5rocks.com/en/tutorials/offline/quota-research/
- ^ https://www.html5rocks.com/en/tutorials/offline/quota-research/
- ^ Джон Ресиг: DOM Storage. Джон Ресиг, ejohn.org. Проверено 12 июня 2011.
- ^ «Проблема 21680002: увеличение предела window.localstorage до 10 МБ с 5 млн. - Проверка кода». chromiumcodereview.appspot.com.
- ^ Введение в веб-хранилище. Сеть разработчиков Microsoft, msdn.microsoft.com. Проверено 5 августа 2014.
- ^ W3C: проект стандарта веб-хранилища. Dev.w3.org (05 февраля 2004 г.). Проверено 12 июня 2011.
- ^ W3C: API индексированных баз данных. W3C. Проверено 12 февраля 2012.
- ^ W3C, 2011 г. http://dev.w3.org/html5/webstorage/
- ^ «DOM Storage». Сеть разработчиков Mozilla. Архивировано из оригинал 4 июня 2011 г.. Получено 2011-06-12.
- ^ «API веб-хранилища». Сеть разработчиков Mozilla. Получено 28 июня, 2017.
- ^ «Введение в хранилище DOM». Сеть разработчиков Microsoft. Архивировано из оригинал 8 июня 2011 г.. Получено 2011-06-12.
- ^ «Введение в веб-хранилище». Сеть разработчиков Microsoft. Получено 28 июня, 2017.
- ^ W3C: проект стандарта веб-хранилища. Dev.w3.org (05 февраля 2004 г.). Проверено 12 июня 2011.
внешняя ссылка
- HTML Living Standard 11 Веб-хранилище
- W3C: веб-хранилище
- API веб-хранилища в сети разработчиков Mozilla
- Opera: веб-хранилище: более простое и мощное хранилище данных на стороне клиента
- Локальное хранилище на BlackBerry DevZone