JavaScript数据缓存需按需存储、合理淘汰、安全读写:内存缓存用Map+时间戳+LRU;localStorage需序列化、加版本号、禁存敏感信息;IndexedDB和Cache API适用于大容量或离线场景;策略应匹配业务节奏,注重一致性与隔离性。
JavaScript 中实现数据缓存,核心是“按需存储 + 合理淘汰 + 安全读写”,不是简单用一个对象存起来就完事。关键在于根据场景选择缓存位置(内存、localStorage、IndexedDB)、设定有效时间、处理并发请求,并避免缓存污染和过期数据误用。
用普通对象或 Map 存储是最直接的方式,响应快、无序列化开销,但页面刷新即丢失,且不共享于 Tab 间。
timestamp 和 maxAge(毫秒),读取前判断是否过期适合用户偏好、配置、离线可用的只读数据(如字典、静态接口返回),但注意容量限制(通常 5–10MB)和同步阻塞问题。
JSON.stringify() 存,JSON.parse() 取;遇到 Date、RegExp、undefined 会丢信息,需自定义序列化逻辑cache_v2_user_profile,升级格式时自动清旧缓存,避免解析失败需要大容量、结构化、异步持久存储时选 IndexedDB;做离线资源缓存(HTML/CSS/JS/图片)则用 Service Worker 的 Cache API。
caches.open('api-v1') 开仓,cache.match() 查,cache.put() 存,天然支持 Request/Response 对象策略不是技术堆砌,而是围绕业务节奏来定:
erId,避免 A 用户看到 B 的缓存结果(尤其在单页多账号切换时)