Подтвердить что ты не робот

Постоянство жизни

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

  • пользователь закрывает вкладку браузера
  • пользователь закрывает браузер
  • пользователь перезапустил систему

Кроме того, я поддерживаю сеанс пользователя посредством аутентификации на основе файлов cookie. Что произойдет, если пользователь выйдет из системы и снова войдет в систему? Есть ли способ получить данные до выхода из системы?

Любая документация по обработке этого приветствуется. Я пролистал спецификации, но это не так хорошо для чтения.

Благодарю.

4b9b3361

Ответ 1

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

Этим размером/временем жизни управляет совершенно новый API управления квотами.

В будущем IndexedDB, возможно, может использовать тип персистентности (маловероятно и не очень хорошая идея).

Ответ 2

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

Ответ 3

Постоянное хранилище доступно в Chrome начиная с версии v52, а Firefox начиная с версии v55. Однако нельзя полагаться на поддержку других браузеров. Вы должны проверить, доступно ли постоянное хранилище, и реагировать соответствующим образом.

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.warn("Storage may be cleared by the UA under storage pressure.");
    }
  });
}

Chrome требуется разрешение на использование этой функции. Он будет автоматически предоставлен при вызове navigator.storage.persist() если выполнено любое из следующих действий:

  • Сайт добавлен в закладки (а у пользователя 5 или меньше закладок)
  • Сайт имеет высокую вовлеченность сайта
  • Сайт был добавлен на домашний экран на мобильном устройстве.
  • На сайте включены push-уведомления

Этот список взят из статьи, в которой описывается реализация Chrome, которая периодически пополняется новой информацией по этому вопросу.