javascript前端缓存通过“存时记时间、取时验时效、定期扫垃圾”实现自动过期:存储时记录时间戳和expiry,读取时校验并清理过期项,辅以定时扫描和封装工具类提升可靠性与复用性。

JavaScript 在前端实现接口请求的数据缓存并支持自动过期清理,核心是“存时记时间、取时验时效、定期扫垃圾”。不依赖后端,纯前端即可完成,关键是把过期逻辑封装进读写操作中,避免手动维护。
存储时附带时间戳和有效期
每次成功获取接口响应后,把数据连同生成时间、过期毫秒数一起序列化存入 localStorage(或 sessionStorage):
- 用
new Date().getTime()记录当前时间戳 - 计算过期时间 = 当前时间 + TTL(如 5 分钟 →
5 * 60 * 1000) - 结构统一为:
{ data: ..., timestamp: 1725500000000, expiry: 1725503000000 }
读取时自动判断是否过期
调用缓存读取函数时,先解析内容,再比对当前时间与 expiry:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 若已过期,立即
localStorage.removeItem(key)清除,并返回null - 若未过期,返回
data字段值 - 可额外加一层容错:捕获
JSON.parse异常,跳过非法缓存项
配合定时清理降低残留风险
仅靠读取时清理可能遗漏长期未访问的过期项。建议每 5–10 分钟执行一次轻量扫描:
- 遍历
Object.keys(localStorage) - 对每个 key 尝试解析,提取
expiry并比对当前时间 - 过期则删除;非 JSON 格式或无
expiry字段的项跳过,不报错 - 使用
setInterval(cleanupExpiredItems, 5 * 60 * 1000)启动,页面卸载前可用clearInterval释放
封装成可复用的缓存工具类
把上述逻辑收拢为一个类,提升可维护性:
- 构造时传入默认 TTL(如
defaultTTL = 300000) - 提供
set(key, data, ttl?)和get(key)方法 - 内部自动处理序列化、时间校验、异常忽略
- 可选开启定时清理(
enableAutoCleanup(true))
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










