SessionStorage 可缓存接口数据,但必须先用 JSON.stringify() 转为字符串再存,读取时用 JSON.parse() 还原并配合 try...catch 防错;适用于单标签页内临时复用,关闭即清空。

SessionStorage 可以缓存接口返回的数据,但要注意它只支持字符串,不能直接存对象或数组 —— 必须先用 JSON.stringify() 转成字符串,读取时再用 JSON.parse() 还原。
怎么存接口数据到 sessionStorage
拿到接口响应后,把数据转成字符串再保存。比如用 fetch 请求用户信息:
- 确保接口返回的是 JSON 格式(通常
response.json()得到的是对象) - 用
JSON.stringify(data)转成字符串 - 用
sessionStorage.setItem('key', stringData)存入
示例代码:
fetch('/api/user')
.then(res => res.json())
.then(data => {
sessionStorage.setItem('userInfo', JSON.stringify(data));
});
怎么安全地读取缓存的数据
读取时不能直接 JSON.parse(sessionStorage.getItem(...)),因为可能为空或格式错误,容易报错:
抓取并分析 OpenClaw JSONL 会话日志,重建并回填代理记忆文件。适用于:(1) 模型切换后记忆不完整,(2) 验证记忆覆盖度,(3) 重建丢失记忆,(4) 通过 cron/heartbeat 自动同步每日记忆。支持简单提取及基于 LLM 的叙事摘要,并自动清理敏感信息。
立即学习“Java免费学习笔记(深入)”;
- 先判断 key 是否存在,再检查内容是否为有效 JSON 字符串
- 推荐用
try...catch包裹JSON.parse - 解析失败时返回
null或默认值,避免页面崩溃
示例代码:
function getCachedData(key) {
const str = sessionStorage.getItem(key);
if (!str) return null;
try {
return JSON.parse(str);
} catch (e) {
return null;
}
}
const userInfo = getCachedData('userInfo');
什么时候适合用 sessionStorage 缓存接口数据
它适合“单次会话内临时复用”的场景,比如:
- 表单页跳转回退时,避免重复请求用户资料
- 多步骤流程中,上一步接口结果供后续步骤使用
- 页面刷新后仍需保留的轻量级状态(注意:关闭标签页就清空)
不适合长期缓存、跨标签页共享或敏感数据(如 token),也不替代服务端逻辑。
要注意的几个坑
- 大小限制:多数浏览器约 5MB,大数据量可能存不进去
- 类型限制:函数、undefined、Date 对象、RegExp 等无法被 JSON 序列化,存了也会丢失
- 过期机制:没有自动过期,得自己加时间戳判断是否过期,或手动清理
- 同源限制:不同协议、域名、端口之间完全隔离,不能跨域读写

















