localstorage 本身不支持设置过期时间,但可通过存入带时间戳的对象并在读取时校验实现模拟过期:setwithexpiry 存储 value 和 expires 时间戳,getwithexpiry 读取时判断并自动清理过期项。

LocalStorage 本身不支持设置过期时间,但可以通过“手动存入时间戳 + 读取时校验”来模拟过期机制,实现自动清理效果。
存储时同时保存数据和过期时间
写入数据时,不直接存原始值,而是封装成一个包含 value 和 expires(毫秒时间戳)的对象:
- 例如:设置 5 分钟后过期,就用
Date.now() + 5 * 60 * 1000作为expires - 用
JSON.stringify转为字符串再存入 LocalStorage
读取时判断是否过期并自动清理
每次调用 getItem 时,先解析出对象,检查 expires 是否小于当前时间:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 若已过期,调用
removeItem清除该键,并返回null - 若未过期,才返回原始
value - 避免重复解析失败导致异常,建议加
try...catch
封装成工具函数更安全易用
推荐封装两个函数,统一处理逻辑:
-
setWithExpiry(key, value, ttlMs):接收键、值、生存时间(毫秒),自动计算并存入 -
getWithExpiry(key):读取并校验,过期则删除并返回null
这样业务代码无需关心时间戳细节,也不用每次手动判断。
注意 localStorage 的限制与替代方案
这个方案是模拟行为,有几点需留意:
- 过期只在读取时触发,不会“准时”自动删除;写入或页面关闭时不会清理
- 无法监听过期事件,也不能批量扫描清理所有过期项(性能差且不推荐)
- 如需更可靠过期控制(如后台同步、定时清理),应改用 IndexedDB 或服务端缓存
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










