当前位置: 首页 > news >正文

HOW - localstorage 超时管理方案

文章目录

  • 实现思路
  • 示例代码
    • 封装工具函数
    • 使用示例
    • 补充建议

localStorage 本身 不支持过期时间(超时设置),因为它设计上是永久存储(除非用户手动清除或调用 removeItem())。

不过,我们可以通过在存储时附带时间戳的方式,自行实现“超时机制”。


实现思路

当你调用 localStorage.setItem() 时,不直接存原始值,而是存一个带有时间戳的对象,例如:

{value: "存储的数据",expire: 过期时间戳(单位:毫秒)
}

然后在读取时判断是否过期,如果过期则自动清除并返回 null


示例代码

封装工具函数

/*** 设置带过期时间的 localStorage* @param {string} key 键名* @param {any} value 值* @param {number} expire 过期时间(毫秒)*/
function setLocalStorage(key, value, expire) {const data = {value,expire: Date.now() + expire, // 当前时间 + 有效期};localStorage.setItem(key, JSON.stringify(data));
}/*** 获取带过期判断的 localStorage* @param {string} key 键名* @returns {any | null} 值(若过期或不存在则返回 null)*/
function getLocalStorage(key) {const raw = localStorage.getItem(key);if (!raw) return null;try {const data = JSON.parse(raw);if (data.expire && Date.now() > data.expire) {localStorage.removeItem(key); // 已过期,删除return null;}return data.value;} catch {return null;}
}/*** 删除 localStorage*/
function removeLocalStorage(key) {localStorage.removeItem(key);
}

使用示例

// 存储 10 分钟有效的数据
setLocalStorage("userInfo", { name: "Tom" }, 10 * 60 * 1000);// 读取数据
const user = getLocalStorage("userInfo");
if (user) {console.log("还没过期:", user);
} else {console.log("数据已过期或不存在");
}

补充建议

场景建议
页面刷新频繁但不希望长期保存数据sessionStorage
想要真正的过期机制(浏览器自动清理)考虑 IndexedDB + 定时任务 或 后端 token 管控
想统一管理缓存可以封装一个缓存工具类或用第三方库(如 store.js
http://www.dtcms.com/a/540337.html

相关文章:

  • java如何判断上传文件的类型,不要用后缀名判断
  • 【Linux】系统备份与恢复:rsync 与 tar 的完整使用教程
  • ROS2系列(3):第一个C++节点
  • zookeeper是什么
  • 构建“全链路解决方案”:解决集团化医院信创的三重难题
  • 网站建设区别广安市邻水建设局网站
  • 网站中的文字滑动怎么做化妆品网站建设策略
  • 【Netty4核心原理⑮】【Netty 编解码的艺术】
  • PHP-Casbin 在分布式服务中利用 Watcher 做策略同步
  • OCP考试必须培训吗?费用多少?
  • SpringBoot + 百度内容安全实战:自定义注解 + AOP 实现统一内容审核(支持文本 / 图片 / 视频 + 白名单 + 动态开关)
  • 心智结构与组织学习
  • NAS 私有云零信任部署:cpolar 加密访问 + 本地存储,破解安全与便捷难题
  • C++面向对象继承全面解析:不能被继承的类、多继承、菱形虚拟继承与设计模式实践
  • 只做财经的网站厦门高端网站建设公
  • 星宿网站建设系统开发过程中原型有哪些作用
  • Angular 入门项目
  • 架构解析:衡石科技如何基于AI+Data Agent重构智能数据分析平台
  • 云栖实录:重构可观测 - 打造大模型驱动的云监控 2.0 与 AIOps 新范式
  • AR技术如何确保数据准确无误?
  • Python-openai对话LLM
  • 智慧码垛系统介绍
  • Axure高保真View Design框架元件库
  • 网站 linux 服务器昆明企业网站开发公司
  • 网站介绍经过下拉怎么做wordpress统计访问ip
  • 济南品牌网站建设低价wordpress建站要钱吗
  • DHT11温湿度传感器Linux驱动开发完整流程
  • EMD-SVM 太阳能功率预测
  • FFMPEG-1:下载与安装,文件组成,ffmpeg -h 命令汇总,练习使用 ffmpeg、ffplay、ffprobe,
  • 蚂蚁开源高性能扩散语言模型框架dInfe,推理速度提升十倍