ajax 不负责持久化,需配合 localstorage/sessionstorage 或 amplifyjs 实现缓存;localstorage 适合存用户信息等静态 json 数据,sessionstorage 适用于单页会话临时数据,amplifyjs 可自动管理请求与缓存闭环。

Ajax 本身不负责持久化,它只负责发起请求、获取数据。真正实现“请求结果持久化”,是在 Ajax 成功拿到响应后,把数据存到浏览器本地存储中,后续再读取使用。
用 localStorage 存简单接口数据
适合保存结构清晰、体积不大、不需要频繁查询的 JSON 数据,比如用户信息、配置项、首页列表快照等。
- 请求成功后,用 JSON.stringify() 转成字符串再存:
localStorage.setItem('userProfile', JSON.stringify(data)); - 页面加载时,优先读缓存:
const cached = localStorage.getItem('userProfile');<br>if (cached) { render(JSON.parse(cached)); } else { fetch('/api/profile').then(...); } - 注意:localStorage 只接受字符串;单域名容量约 5–10MB;键名区分大小写;手动清除或代码调用 removeItem() / clear() 会丢失数据。
用 sessionStorage 缓存临时会话数据
适用于当前标签页内多次访问但无需跨页面保留的数据,比如表单草稿、筛选条件、临时 token。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 写法和 localStorage 完全一致,只是生命周期不同:
sessionStorage.setItem('searchFilters', JSON.stringify(filters)); - 关闭当前标签页后自动清空,不用额外清理;多标签页之间互不影响。
- 适合做“一次会话内”的轻量缓存,避免重复提交或重复拉取相同参数的数据。
用 AmplifyJS 简化缓存流程
AmplifyJS 的 amplify.request 模块内置了缓存机制,配合 amplify.store 可自动完成请求 + 存储 + 读取闭环。
- 引入两个文件:
amplify.request.min.js和可选的amplify.store.min.js(如需持久化) - 定义请求时开启内存缓存:
amplify.request.define('getUser', 'ajax', { url: '/api/user', cache: true }); - 需要持久化缓存时,加 storage 配置:
cache: { type: 'persisted', expires: 3600000 } // 1小时过期 - 底层自动用 localStorage 或 sessionStorage 存储,你只需调用
amplify.request('getUser'),它会智能判断走网络还是读缓存。
处理过期与同步问题
纯 localStorage 不带时间戳,容易读到陈旧数据。建议主动管理有效期。
- 存数据时一并记录时间:
localStorage.setItem('newsList', JSON.stringify({ data, timestamp: Date.now() })); - 读取时检查是否超时(比如 10 分钟):
if (data.timestamp && Date.now() - data.timestamp - 多个页面同时操作同一 key 时,localStorage 的变更不会自动触发事件;可用 storage 事件监听其他标签页的修改,做被动同步。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










