Постоянство жизни
Я прочитал несколько статей о IndexdDB, но не смог найти подробностей о времени существования постоянных данных. Я планирую использовать его для сеанса манипулирования данными и загрузки после завершения работы пользователя. Но что будет, если:
- пользователь закрывает вкладку браузера
- пользователь закрывает браузер
- пользователь перезапустил систему
Кроме того, я поддерживаю сеанс пользователя посредством аутентификации на основе файлов cookie. Что произойдет, если пользователь выйдет из системы и снова войдет в систему? Есть ли способ получить данные до выхода из системы?
Любая документация по обработке этого приветствуется. Я пролистал спецификации, но это не так хорошо для чтения.
Благодарю.
Ответы
Ответ 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, которая периодически пополняется новой информацией по этому вопросу.