Spec-Zone.ru › Web APIs

API хранения

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна в Web Workers.

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

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

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

Эта статья предоставляет обзор способа, которым браузеры хранят и поддерживают данные веб-сайтов. Дополнительную информацию о квотах хранения и удалении данных см. в квотах браузера и критериях удаления данных.

В этой статье также содержится обзор StorageManager интерфейса, используемого для оценки доступного места хранения для сайта.

Концепции и использование

Ведра хранения

Система хранения, описанная в стандарте хранения, в которой хранятся данные сайта, обычно состоит из одного ведра для каждого домена.

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

Для получения дополнительной информации см. Как браузеры разделяют данные разных веб-сайтов?

Режимы ведер

Каждое хранилище сайта имеет режим, который описывает политику хранения данных для этого ведра. Существует два режима:

"best-effort"

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

"persistent"

Браузер будет сохранять данные как можно дольше, очищая все "best-effort" ведра, прежде чем рассматривать очистку ведра, помеченного "persistent". Если потребуется рассмотреть очистку постоянных ведер, браузер уведомит пользователя и предоставит способ очистить одно или несколько постоянных ведер по мере необходимости.

Вы можете изменить режим ведра хранения домена, используя метод navigator.storage.persist(), который требует "persistent-storage" разрешения пользователя.

if (navigator.storage && navigator.storage.persist) {
  navigator.storage.persist().then((persistent) => {
    if (persistent) {
      console.log("Storage will not be cleared except by explicit user action");
    } else {
      console.log("Storage may be cleared by the UA under storage pressure.");
    }
  });
}

Вы также можете использовать метод navigator.storage.persisted(), чтобы узнать, является ли хранилище домена постоянным или нет:

if (navigator.storage && navigator.storage.persist) {
  navigator.storage.persisted().then((persistent) => {
    if (persistent) {
      console.log("Storage will not be cleared except by explicit user action");
    } else {
      console.log("Storage may be cleared by the UA under storage pressure.");
    }
  });
}

Для получения дополнительной информации см. Данные, хранящиеся в браузере, сохраняются?.

Квоты и оценки использования

Браузер определяет максимальное количество места хранения, которое может использовать данный сайт, используя любой выбранный им механизм. Это максимальное значение — квота домена. Объем этого пространства, используемого сайтом, называется его использованием. Обе эти величины являются оценочными; существуют несколько причин, по которым они не являются точными:

  • Браузеры стремятся скрыть точный размер данных, используемых данным доменом, чтобы предотвратить использование этих значений для фингерпринтинга.
  • Могут использоваться методы дедупликации, сжатия и другие методы для уменьшения физического размера хранящихся данных.
  • Квоты являются консервативными оценками доступного пространства для использования доменом и должны быть меньше доступного пространства на устройстве, чтобы предотвратить переполнение.

Чтобы определить оценочные значения квоты и использования для данного домена, используйте метод navigator.storage.estimate(), который возвращает промис, который при решении получает объект, содержащий эти значения. Например:

navigator.storage.estimate().then((estimate) => {
  // estimate.quota is the estimated quota
  // estimate.usage is the estimated number of bytes used
});

Дополнительную информацию о том, сколько данных может хранить домен, см. в Сколько данных можно хранить?.

Удаление данных

Удаление данных — это процесс, посредством которого браузер удаляет хранимые данные домена. Это может произойти, например, когда на устройстве, на котором хранятся данные, мало места.

При очистке данных, хранимых доменом, ведро домена обрабатывается как единое целое. Все данные, хранящиеся этим доменом, удаляются.

Если ведро помечено как "persistent", его содержимое не будет удалено браузером без явного действия самого домена или пользователя. Это включает сценарии, такие как выбор пользователем опции «Очистить кэш» или «Очистить историю». Пользователя будут спрашивать о разрешении на удаление постоянных ведер хранения сайта.

Для получения дополнительной информации см. Когда удаляются данные?.

Интерфейсы

StorageManager

Предоставляет интерфейс для управления разрешениями на постоянное хранение и оценки доступного места хранения.

Расширения для других интерфейсов

Navigator.storage Только чтение

Возвращает объект-синглтон StorageManager, используемый для управления разрешениями на постоянное хранение и оценки доступного места хранения для каждого сайта/приложения.

WorkerNavigator.storage Только чтение

Возвращает интерфейс StorageManager для управления разрешениями на постоянное хранение и оценки доступного места хранения.

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

Спецификация
Хранение
# storagemanager

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

Рабочий стол Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Storage_API 55 79 57 42 15.2 55 57 42 15.2 6.0 55
estimate 61 79 57 48 17 61 57 45 17 8.0 61
getDirectory 86 86 111 72 15.2 109 111 74 15.2 21.0 109
persist 55 79 57 42 15.2 55 57 42 15.2 6.0 55
persisted 55 79 57 42 15.2 55 57 42 15.2 6.0 55

См. также

  • Использование API разрешений
  • Хранение для веб в web.dev
  • Постоянное хранилище на web.dev
  • Chrome Web Хранилище и Концепции квот

© 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/Storage_API

Spec-Zone.ru

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