JavaScript 为 localStorage 和 sessionStorage 添加失效时间的实现方案

作者:半夏时间:2026-10-31 19:11:14浏览:441

本文介绍如何在 JavaScript 中为 localStorage 和 sessionStorage 设置数据失效时间。通过封装存储与获取函数,在读取时检查时间戳判断是否过期,并结合 setInterval 定期清理过期数据,实现本地存储数据的自动清除机制。

若需为本地存储的数据设定失效时间以实现自动清除,可借助 localStorage 或 sessionStorage,并配合 JavaScript 代码逻辑完成。具体实现方式如下。

1. 在 localStorage 中存储数据并设定失效时间

// 存储数据并设置失效时间(单位:毫秒)
function setLocalStorageWithExpiry(key, value, expiryInMilliseconds) {
    const now = new Date();
    const item = {
        value: value,
        expiry: now.getTime() + expiryInMilliseconds
    };
    localStorage.setItem(key, JSON.stringify(item));
}

// 获取数据并检查是否失效
function getLocalStorageWithExpiry(key) {
    const itemStr = localStorage.getItem(key);
    if (!itemStr) {
        return null;
    }
    const item = JSON.parse(itemStr);
    const now = new Date();
    if (now.getTime() > item.expiry) {
        localStorage.removeItem(key);
        return null;
    }
    return item.value;
}

// 示例:存储数据并设置 1 小时后失效
setLocalStorageWithExpiry('myKey', 'myValue', 60 * 60 * 1000);

// 示例:获取数据
const value = getLocalStorageWithExpiry('myKey');
console.log(value); // 输出: myValue (如果未失效) 或 null (如果已失效)

2. 在 sessionStorage 中存储数据并设定失效时间

sessionStorage 的生命周期通常与浏览器会话绑定,即关闭浏览器窗口后数据会自动清除。若需手动控制其失效时间,可采用类似 localStorage 的处理方式。

// 存储数据并设置失效时间(单位:毫秒)
function setSessionStorageWithExpiry(key, value, expiryInMilliseconds) {
    const now = new Date();
    const item = {
        value: value,
        expiry: now.getTime() + expiryInMilliseconds
    };
    sessionStorage.setItem(key, JSON.stringify(item));
}

// 获取数据并检查是否失效
function getSessionStorageWithExpiry(key) {
    const itemStr = sessionStorage.getItem(key);
    if (!itemStr) {
        return null;
    }
    const item = JSON.parse(itemStr);
    const now = new Date();
    if (now.getTime() > item.expiry) {
        sessionStorage.removeItem(key);
        return null;
    }
    return item.value;
}

// 示例:存储数据并设置 1 小时后失效
setSessionStorageWithExpiry('myKey', 'myValue', 60 * 60 * 1000);

// 示例:获取数据
const value = getSessionStorageWithExpiry('myKey');
console.log(value); // 输出: myValue (如果未失效) 或 null (如果已失效)

3. 实现过期数据的自动清除

可通过定时任务定期检查并移除已过期的数据:

function clearExpiredLocalStorage() {
    for (let i = 0; i < localStorage.length; i++) {
        const key = localStorage.key(i);
        getLocalStorageWithExpiry(key);
    }
}

// 每隔一段时间检查一次
setInterval(clearExpiredLocalStorage, 60 * 60 * 1000); // 每小时检查一次

利用上述方法,可有效管理本地存储的数据状态,确保在设定的失效时间到达后自动清理相关数据。

关于 JavaScript 中为本地存储数据设置失效时间及清除方法的介绍至此结束。如需了解更多相关内容,可查阅本站往期文章或继续阅读后续章节,感谢支持。

作者最新文章