Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Веб-хранилище , иногда называемое хранилищем DOM ( хранилище объектной модели документа ), предоставляет веб-приложениям методы и протоколы для хранения данных на стороне клиента. Веб-хранилище поддерживает постоянное хранение данных, подобное файлам cookie, но со значительно увеличенной емкостью [1] и без информации, хранящейся в заголовке HTTP-запроса . [2] Существует два основных типа веб-хранилищ: локальное хранилище и хранилище сеанса, поведение которых аналогично постоянным файлам cookie и файлам cookie сеанса соответственно. Веб-хранилище стандартизировано Консорциумом World Wide Web (W3C) [3]и WHATWG . [4] Его поддерживают все основные браузеры.

Особенности [ править ]

Интернет-хранилище отличается от файлов cookie некоторыми ключевыми особенностями.

Цель
Файлы cookie предназначены для связи с серверами; они автоматически добавляются ко всем запросам и могут быть доступны как на стороне сервера, так и на стороне клиента. Веб-хранилище подпадает исключительно под действие сценариев на стороне клиента . Данные веб-хранилища не передаются автоматически на сервер в каждом HTTP-запросе, и веб-сервер не может напрямую писать в веб-хранилище. Однако любой из этих эффектов может быть достигнут с помощью явных клиентских сценариев, позволяющих точно настроить желаемое взаимодействие с сервером.
Размер хранилища
Файлы cookie ограничены 4 килобайтами. Веб-хранилище обеспечивает гораздо большую емкость хранилища:
  • Opera 10.50+ позволяет использовать 5 МБ [5]
  • Safari 8 позволяет 5 МБ [6]
  • Firefox 34 позволяет 10 МБ [7] (ранее 5 МБ на источник в 2007 году [8] )
  • Google Chrome позволяет использовать 10 МБ для каждого источника [9]
  • Internet Explorer позволяет использовать 10 МБ для каждой области хранения [10]
Локальное и сессионное хранилище
Веб-хранилище предлагает две разные области хранения - локальное хранилище и хранилище сеансов, которые различаются по объему и сроку службы. Данные, помещаемые в локальное хранилище, относятся к каждому источнику - комбинация протокола, имени хоста и номера порта, как определено в политике одного источника . Данные доступны для всех скриптов, загружаемых со страниц из того же источника, который ранее хранил данные, и сохраняются после закрытия браузера. Таким образом, веб-хранилище не страдает от проблем со слабой целостностью и конфиденциальностью файлов cookie, описанными в RFC  6265.разделы 8.5 и 8.6. Хранение сеансов доступно как для каждого источника, так и для каждого экземпляра (для каждого окна или вкладки) и ограничено временем жизни экземпляра. Хранилище сеансов предназначено для того, чтобы отдельные экземпляры одного и того же веб-приложения могли работать в разных окнах, не мешая друг другу, - вариант использования, который плохо поддерживается файлами cookie. [11]
Интерфейс и модель данных
Веб-хранилище предоставляет лучший программный интерфейс, чем файлы cookie, поскольку предоставляет модель данных ассоциативного массива, в которой ключи и значения являются строками . Рабочая группа W3C по веб-приложениям рассматривает дополнительный API для доступа к структурированным данным . [12]

Использование [ править ]

Браузеры, поддерживающие веб-хранилище, имеют глобальные объекты sessionStorageи localStorageобъявляются на уровне окна. В этих браузерах можно использовать следующий код JavaScript для запуска поведения веб-хранилища:

// Сохраняем значение в браузере на время сеанса sessionStorage . setItem ( 'ключ' ,  'значение' );// Получить значение (удаляется при закрытии браузера и вновь открыт) ... предупреждение ( sessionStorage . GetItem ( «ключ» ));// Сохраняем значение в браузере сверх продолжительности сеанса localStorage . setItem ( 'ключ' ,  'значение' );// Получить значение (сохраняется даже после закрытия и повторного открытия браузера) предупреждения ( LocalStorage . GetItem ( «ключ» ));

Только строки могут быть сохранены через Storage API. [13] Попытка сохранить другой тип данных приведет к автоматическому преобразованию в строку в большинстве браузеров. Однако преобразование в JSON позволяет эффективно хранить объекты JavaScript.

// Сохраняем объект вместо строки localStorage . setItem ( 'ключ' ,  { имя :  'значение' }); оповещения ( TypeOf  LocalStorage . GetItem ( 'ключ' ));  // нить// Сохраняем целое число вместо строки localStorage . setItem ( 'ключ' ,  1 ); оповещения ( TypeOf  LocalStorage . GetItem ( 'ключ' ));  // нить// Сохраняем объект с помощью JSON localStorage . setItem ( 'ключ' ,  JSON . stringify ({ имя :  'значение' })); предупреждение ( JSON . parse ( localStorage . getItem ( 'key' )). name );  // ценить

Номенклатура [ править ]

Проект W3C называется «Веб-хранилище». «Хранилище DOM» также было широко используемым названием, хотя оно становится все реже; например, веб-статьи «Хранилище DOM» на сайтах разработчиков Mozilla и Microsoft были заменены статьями «Веб-хранилище». [14] [15] [16] [17]

«DOM» в хранилище DOM буквально не относится к объектной модели документа . Согласно W3C, «термин DOM используется для обозначения набора API, доступного для скриптов в веб-приложениях, и не обязательно подразумевает существование фактического объекта Document ...» [18]

Управление веб-хранилищем [ править ]

Хранение объектов веб-хранилища включено по умолчанию в текущих версиях всех поддерживающих веб-браузеров, при этом поставщики браузеров предоставляют пользователям способы включить или отключить веб-хранилище или очистить «кеш» веб-хранилища. Аналогичный контроль над веб-хранилищем также доступен через сторонние расширения браузера . Каждый браузер хранит объекты веб-хранилища по-разному:

  • Firefox сохраняет объекты веб-хранилища в файле SQLite, который вызываетсяwebappsstore.sqlite в папке профиля пользователя.
  • Google Chrome записывает данные веб-хранилища в файл SQLite в профиле пользователя. Подпапка, содержащая этот файл, - " \AppData\Local\Google\Chrome\User Data\Default\Local Storage" в Windows и " ~/Library/Application Support/Google/Chrome/Default/Local Storage" в macOS .
  • Веб-хранилище Opera находится в " \AppData\Roaming\Opera\Opera\sessions\autosave.win" или " \AppData\Local\Opera\Opera\pstorage\" в зависимости от версии Opera.
  • Интернет -хранилище Internet Explorer - это " \AppData\LocalLow\Microsoft\Internet Explorer\DOMStorage".

См. Также [ править ]

  • Индексированная база данных API

Ссылки [ править ]

  1. ^ Веб-хранилище Opera, 2011 г. http://dev.opera.com/articles/view/web-storage/
  2. ^ AndyHume.net, 2011 http://blog.andyhume.net/localstorage-is-not-cookies
  3. ^ Интернет-хранилище . W3.org. Проверено 12 июня 2011.
  4. ^ HTML Living Standard 11 Веб-хранилище
  5. ^ https://dev.opera.com/articles/web-storage/
  6. ^ https://www.html5rocks.com/en/tutorials/offline/quota-research/
  7. ^ https://www.html5rocks.com/en/tutorials/offline/quota-research/
  8. ^ Джон Ресиг: Хранилище DOM . Джон Ресиг , ejohn.org . Проверено 12 июня 2011.
  9. ^ «Проблема 21680002: увеличение предела window.localstorage до 10M с 5M. - Проверка кода» . chromiumcodereview.appspot.com .
  10. ^ Введение в веб-хранилище . Сеть разработчиков Microsoft , msdn.microsoft.com . Проверено 5 августа 2014.
  11. ^ W3C: проект стандарта веб-хранилища . Dev.w3.org (05 февраля 2004 г.). Проверено 12 июня 2011.
  12. ^ W3C: API индексированных баз данных . W3C. Проверено 12 февраля 2012.
  13. ^ W3C, 2011 http://dev.w3.org/html5/webstorage/
  14. ^ "Хранилище DOM" . Сеть разработчиков Mozilla . Архивировано из оригинала на 4 июня 2011 года . Проверено 12 июня 2011 .
  15. ^ "API веб-хранилища" . Сеть разработчиков Mozilla . Проверено 28 июня 2017 года .
  16. ^ «Введение в хранилище DOM» . Сеть разработчиков Microsoft . Архивировано из оригинала 8 июня 2011 года . Проверено 12 июня 2011 .
  17. ^ «Введение в веб-хранилище» . Сеть разработчиков Microsoft . Проверено 28 июня 2017 года .
  18. ^ W3C: проект стандарта веб-хранилища . Dev.w3.org (05 февраля 2004 г.). Проверено 12 июня 2011.

Внешние ссылки [ править ]

  • HTML Living Standard 11 Веб-хранилище
  • W3C: веб-хранилище
  • API веб-хранилища в сети разработчиков Mozilla
  • Opera: веб-хранилище: более простое и мощное хранилище данных на стороне клиента
  • Локальное хранилище на BlackBerry DevZone