Локальное хранилище с истечением срока действия - PullRequest
0 голосов
/ 05 декабря 2018

Как я могу установить срок действия определенной локальной переменной хранения?

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

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

Cookies были бы другим решением, но я бы предпочел не использовать его, если это возможно.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Нет встроенного способа истечения значений в хранилище.Одним из решений является сохранение временной метки, а затем при каждом посещении сравнивайте сохраненное время (если оно есть) с местным временем, чтобы определить, истекло ли значение.Пример:

const expirationDuration = 1000 * 60 * 60 * 12; // 12 hours

const prevAccepted = localStorage.getItem("accepted");
const currentTime = new Date().getTime();

const notAccepted = prevAccepted == undefined;
const prevAcceptedExpired = prevAccepted != undefined && currentTime - prevAccepted > expirationDuration
if (notAccepted || prevAcceptedExpired) {
  alert("Disclaimer: ...");
  localStorage.setItem("accepted", currentTime);
}
0 голосов
/ 05 декабря 2018

Согласно MDN window.localstorage

данные, хранящиеся в localStorage, не имеют срока годности

Похоже на использование куки будет путь

...