Spec-Zone.ru › Web APIs

API хранилища веб-страницы

API хранилища веб-страницы предоставляет механизмы, с помощью которых браузеры могут хранить пары ключ/значение более интуитивно, чем с помощью куки.

Основные понятия и использование

Два механизма в хранилище веб-страницы таковы:

  • sessionStorage поддерживает отдельный хранилище для каждого заданного происхождения, доступного в течение сеанса страницы (пока открыта вкладка браузера, включая перезагрузки и восстановление страниц).

  • localStorage делает то же самое, но сохраняется даже после закрытия и повторного открытия браузера.

Эти механизмы доступны через свойства Window.sessionStorage и Window.localStorage. Вызов одного из них вернет экземпляр объекта Storage, с помощью которого можно устанавливать, получать и удалять элементы данных. Отдельный объект хранилища используется для sessionStorage и localStorage для каждого происхождения — они функционируют и управляются раздельно.

Чтобы узнать о количестве доступного хранилища с использованием API и о том, что происходит при превышении ограничений хранилища, см. Квоты хранилища и критерии удаления.

Оба sessionStorage и localStorage в хранилище веб-страницы являются синхронными по своей природе. Это означает, что когда данные устанавливаются, извлекаются или удаляются из этих механизмов хранения, операции выполняются синхронно, блокируя выполнение другого JavaScript-кода, пока операция не будет завершена. Это синхронное поведение может потенциально повлиять на производительность веб-приложения, особенно если хранится или извлекается большое количество данных.

Разработчики должны проявлять осторожность при выполнении операций с sessionStorage или localStorage, которые предполагают значительный объем данных или вычислений. Важно оптимизировать код и минимизировать синхронные операции, чтобы предотвратить блокировку пользовательского интерфейса и задержки в отзывчивости приложения.

Асинхронные альтернативы, такие как IndexedDB, могут быть более подходящими для случаев, когда производительность является проблемой или когда требуется работа с большими наборами данных. Эти альтернативы позволяют выполнять операции без блокировки, обеспечивая более плавный пользовательский опыт и лучшую производительность веб-приложений.

Примечание: Доступ к хранилищу веб-страницы из фреймов третьих сторон запрещен, если пользователь отключил куки третьих сторон.

Определение доступа к хранилищу третьей стороной

У каждого происхождения есть собственное хранилище — это справедливо как для хранилища веб-страницы, так и для хранилища общего пользования. Однако доступ кода третьей стороны (то есть встроенного) к хранилищу общего пользования зависит от его контекста просмотра. Контекст, в котором выполняется код третьей стороны из другого происхождения, определяет доступ к хранилищу третьей стороны.

A box diagram showing a top-level browsing context called publisher.com, with third-party content embedded in it

Код третьей стороны можно добавить на другой сайт, вставив его с помощью элемента <script> или установив источник <iframe> на сайт, содержащий код третьей стороны. Используемый метод интеграции кода третьей стороны определяет контекст просмотра кода.

  • Если ваш код третьей стороны добавлен на другой сайт с элементом <script>, ваш код будет выполняться в контексте просмотра внедрения. Следовательно, когда вы вызываете Storage.setItem() или SharedStorage.set(), пара ключ/значение будет записана в хранилище внедрения. С точки зрения браузера нет разницы между кодом первой стороны и кодом третьей стороны, когда используется тег <script>.
  • Когда ваш код третьей стороны добавлен на другой сайт внутри <iframe>, код внутри <iframe> будет выполняться с происхождением контекста просмотра <iframe>. Если код внутри <iframe> вызывает Storage.setItem(), данные будут записаны в локальное или сеансовое хранилище происхождения <iframe>. Если код <iframe> вызывает SharedStorage.set(), данные будут записаны в хранилище общего пользования происхождения <iframe>.

Интерфейсы хранилища веб-страницы

Storage

Позволяет устанавливать, извлекать и удалять данные для определенного домена и типа хранилища (сеанса или локального).

Window

API хранилища веб-страницы расширяет объект Window двумя новыми свойствами — Window.sessionStorage и Window.localStorage — которые предоставляют доступ к сеансовым и локальным объектам хранилища текущего домена Storage соответственно, а также обработчик события storage, который срабатывает при изменении хранилища (например, при хранении нового элемента).

StorageEvent

Событие storage срабатывает на объекте Window документа при изменении области хранилища.

Примеры

Чтобы проиллюстрировать типичное использование хранилища веб-страницы, мы создали пример, назовем его Демонстрация хранилища веб-страницы. Главная страница предоставляет элементы управления, с помощью которых можно настраивать цвет, шрифт и декоративное изображение. При выборе разных параметров страница мгновенно обновляется; кроме того, ваши варианты сохраняются в localStorage, так что когда вы покинете страницу и загрузите ее позже, ваши варианты сохранятся.

Кроме того, мы предоставили страницу вывода событий — если вы загрузите эту страницу в другой вкладке, а затем внесете изменения в свои варианты на главной странице, вы увидите обновленную информацию о хранилище, так как срабатывает событие StorageEvent.

Спецификации

Спецификация
HTML
# dom-localstorage-dev
HTML
# dom-sessionstorage-dev

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Web_Storage_API 4 12 2 10.5 4 18 4 11 3.2 1.0 ≤37
Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Web_Storage_API 4 12 3.5 10.5 4 18 4 11 3.2 1.0 ≤37

api.Window.localStorage

Таблицы BCD загружаются только в браузере

api.Window.sessionStorage

Таблицы BCD загружаются только в браузере

Режим приватного/инкогнито просмотра

В частных окнах, режиме инкогнито и аналогичных режимах приватного просмотра данные, такие как история и куки, не сохраняются. В частном режиме localStorage обрабатывается как sessionStorage. API хранилища по-прежнему доступны и полностью функциональны, но все данные, сохраненные в частном окне, удаляются при закрытии браузера или вкладки браузера.

См. также

  • Использование API хранилища веб-страницы
  • Квоты хранилища браузера и критерии удаления

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API