Веб-хранилище
HTML |
---|
Сравнения |
Веб-хранилище , иногда называемое хранилищем DOM ( хранилище объектной модели документа ), представляет собой стандартный API JavaScript, предоставляемый веб-браузерами . Он позволяет веб-сайтам хранить постоянные данные на устройствах пользователей аналогично файлам cookie , но с гораздо большей емкостью. [1] и никакая информация не отправляется в заголовках HTTP . [2] Существует два основных типа веб-хранилищ: локальное хранилище и хранилище сеансов, которые ведут себя аналогично постоянным файлам cookie и сеансовым файлам cookie соответственно. Веб-хранилище стандартизировано Консорциумом World Wide Web (W3C). [3] и ЧТОРГ , [4] и поддерживается всеми основными браузерами.
Функции
[ редактировать ]Веб-хранилище отличается от файлов cookie в некоторых ключевых аспектах.
Цель
[ редактировать ]Файлы cookie предназначены для связи с серверами; они автоматически добавляются ко всем запросам и доступны как на стороне сервера, так и на стороне клиента. Веб-хранилище подпадает исключительно под действие сценариев на стороне клиента . Данные веб-хранилища не передаются автоматически на сервер при каждом HTTP-запросе, и веб-сервер не может напрямую записывать данные в веб-хранилище. Однако любого из этих эффектов можно достичь с помощью явных сценариев на стороне клиента, позволяющих точно настроить желаемое взаимодействие с сервером.
Размер хранилища
[ редактировать ]Размер файлов cookie ограничен 4 килобайтами. Веб-хранилище обеспечивает гораздо большую емкость:
- Opera 10.50+ позволяет 5 МБ [1]
- Safari 8 позволяет 5 МБ [5]
- Firefox 34 позволяет 10 МБ [5] (ранее 5 МБ на источник в 2007 г.) [6] )
- Google Chrome разрешает 10 МБ на каждый источник (ранее 5 МБ на каждый источник). [7]
- Internet Explorer допускает 10 МБ на область хранения. [8]
Локальное и сеансовое хранилище
[ редактировать ]Веб-хранилище предлагает две разные области хранения — локальное хранилище и хранилище сеансов, которые различаются по объему и сроку службы. Данные, размещаемые в локальном хранилище, относятся к каждому источнику — комбинация протокола, имени хоста и номера порта, как определено в политике одного и того же источника . Данные доступны всем скриптам, загруженным со страниц того же источника, на котором ранее хранились данные, и сохраняются после закрытия браузера. Таким образом, веб-хранилище не страдает от проблем слабой целостности и слабой конфиденциальности файлов cookie, описанных в разделе RFC 6265, разделы 8.5 и 8.6. Хранилище сеансов предназначено как для каждого источника, так и для каждого экземпляра (для каждого окна или для каждой вкладки) и ограничено временем существования экземпляра. Хранилище сеансов предназначено для того, чтобы отдельные экземпляры одного и того же веб-приложения могли запускаться в разных окнах, не мешая друг другу, — вариант использования, который плохо поддерживается файлами cookie. [9]
Интерфейс и модель данных
[ редактировать ]Веб-хранилище обеспечивает лучший программный интерфейс, чем файлы cookie, поскольку оно предоставляет ассоциативного массива модель данных , в которой ключи и значения являются строками .
Использование
[ редактировать ]
Браузеры, поддерживающие веб-хранилище, имеют глобальные объекты. sessionStorage
и localStorage
объявлено на уровне окна. следующий код JavaScript для запуска поведения веб-хранилища: В этих браузерах можно использовать
// Store value on browser for duration of the session
sessionStorage.setItem('key', 'value');
// Retrieve value (gets deleted when browser is closed and re-opened) ...
alert(sessionStorage.getItem('key'));
// Store value on the browser beyond the duration of the session
localStorage.setItem('key', 'value');
// Retrieve value (persists even after closing and re-opening the browser)
alert(localStorage.getItem('key'));
Через Storage API можно хранить только строки. [10] Попытка сохранить другой тип данных приведет к автоматическому преобразованию в строку в большинстве браузеров. Однако преобразование в JSON позволяет эффективно хранить объекты JavaScript.
// Store an object instead of a string
localStorage.setItem('key', {name: 'value'});
alert(typeof localStorage.getItem('key')); // string
// Store an integer instead of a string
localStorage.setItem('key', 1);
alert(typeof localStorage.getItem('key')); // string
// Store an object using JSON
localStorage.setItem('key', JSON.stringify({name: 'value'}));
alert(JSON.parse(localStorage.getItem('key')).name); // value
Номенклатура
[ редактировать ]Проект W3C называется «Веб-хранилище». «Хранилище DOM» также было широко используемым названием, хотя его становится все меньше; например, веб-статьи «DOM Storage» на сайтах разработчиков Mozilla и Microsoft были заменены статьями «Web Storage». [11] [12] [13] [14]
«DOM» в хранилище DOM не относится буквально к объектной модели документа . Согласно W3C, «термин DOM используется для обозначения набора API, доступного сценариям в веб-приложениях, и не обязательно подразумевает существование реального объекта Document...» [15]
Управление веб-хранилищем
[ редактировать ]Хранение объектов веб-хранилища включено по умолчанию в текущих версиях всех поддерживающих веб-браузеров, при этом поставщики браузеров предоставляют пользователям встроенные способы включения или отключения веб-хранилища или очистки «кеша» веб-хранилища. [16] Аналогичные элементы управления веб-хранилищем также доступны через расширения браузера сторонних производителей . Каждый браузер хранит объекты веб-хранилища по-разному:
- Firefox сохраняет объекты веб-хранилища в файле SQLite с именем
webappsstore.sqlite
в папке профиля пользователя. [17] - 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
". - Веб-хранилище Safari находится в папке с надписью «
LocalStorage
"в скрытом"safari
" папка. [18]
Подобные технологии
[ редактировать ]Хотя localStorage часто используется для хранения постоянных пар ключ-значение, появились и другие API, позволяющие реализовать различные варианты использования, например итерируемую индексацию. [19] и с различными шаблонами производительности:
- API индексированной базы данных
- База данных веб-SQL
- HTTP-куки
- Частная файловая система Origin (OPFS)
Ссылки
[ редактировать ]- ^ Перейти обратно: а б Диксит, Шветанк (5 марта 2013 г.). «Веб-хранилище: более простое и мощное хранилище данных на стороне клиента» . Дев.Опера . Проверено 14 мая 2021 г.
- ^ Хьюм, Энди (24 марта 2011 г.). «localStorage — это не файлы cookie» . andyhume.net . Архивировано из оригинала 2 июня 2011 г. Проверено 14 мая 2021 г.
- ^ Хиксон, Ян, изд. (28 января 2021 г.). «Веб-хранилище (второе издание)» . W3C . Рабочая группа веб-платформы . Проверено 14 мая 2021 г.
- ^ ЧТОРГ. «Стандарт HTML § 12 Веб-хранилище» . html.spec.whatwg.org . Проверено 14 мая 2021 г.
- ^ Перейти обратно: а б Китамура, Эйдзи (28 января 2014 г.). «Работа с квотами в мобильных браузерах: отчет об исследовании хранилища браузера — HTML5 Rocks» . Архивировано из оригинала 1 февраля 2014 г. Проверено 4 мая 2021 г.
- ^ Джон Ресиг: Хранилище DOM . Джон Резиг, ejohn.org . Проверено 12 июня 2011 г.
- ^ Майклн (08 марта 2013 г.). «Проблема 21680002: увеличение лимита window.localstorage до 10 МБ с 5 МБ. — Проверка кода» . Обзоры кода Chromium . Проверено 14 мая 2021 г.
- ^ Майкрософт (20 октября 2016 г.). «Введение в веб-хранилище» . Документы Майкрософт . Майкрософт . Проверено 14 мая 2021 г.
- ^ W3C: Проект стандарта веб-хранилища . Dev.w3.org (5 февраля 2004 г.). Проверено 12 июня 2011 г.
- ^ W3C, 2011 г. http://dev.w3.org/html5/webstorage/
- ^ «Хранилище DOM» . Сеть разработчиков Mozilla . Архивировано из оригинала 4 июня 2011 года . Проверено 12 июня 2011 г.
- ^ «API веб-хранилища» . Сеть разработчиков Mozilla . Проверено 28 июня 2017 г.
- ^ «Введение в хранилище DOM» . Сеть разработчиков Microsoft . Архивировано из оригинала 8 июня 2011 года . Проверено 12 июня 2011 г.
- ^ «Введение в веб-хранилище» . Сеть разработчиков Microsoft . Проверено 28 июня 2017 г.
- ^ W3C: Проект стандарта веб-хранилища . Dev.w3.org (5 февраля 2004 г.). Проверено 12 июня 2011 г.
- ^ Как включить, отключить или очистить кэш «Веб-хранилища» вашего браузера . середина.ас. Проверено 6 октября 2022 г.
- ^ Webappsstore.sqlite kb.mozillazine.org
- ^ Где хранятся веб-данные Safari? обсуждения.apple.com. Получено 20 6 октября 2022 г.
- ^ «localStorage в современных приложениях» . RxDB . Проверено 14 августа 2023 г.
Внешние ссылки
[ редактировать ]- HTML Living Standard 11 Веб-хранилище
- W3C: веб-хранилище
- API веб-хранилища в сети разработчиков Mozilla
- Opera: Web Storage: более простое и мощное хранилище данных на стороне клиента
- Локальное хранилище в BlackBerry DevZone