JavaScript 中用 Map 实现 API 请求缓存,以 URL(或标准化请求标识)为 key,value 为含 data、timestamp 和 ttl 的对象,读取时校验过期时间,轻量可控,适用于 SPA 短期缓存。

用 JavaScript 的 Map 实现 API 请求缓存,核心是把请求 URL(或请求标识)作为 key,响应数据和时间戳作为 value,再配合过期判断实现简易缓存策略。它轻量、可手动控制、避免重复请求,适合中低频接口或离线优先场景。
缓存结构设计:URL + 响应 + 过期时间
Map 本身不支持自动过期,所以需要手动存入时间戳,并在读取时校验。推荐 value 存为对象:
- data:实际响应内容(如 JSON 数据)
-
timestamp:缓存写入时间(
Date.now()) - ttl(可选):该条目的有效毫秒数(比如 5 * 60 * 1000 表示 5 分钟)
这样每条缓存自带生命周期信息,无需额外管理。
封装一个带缓存的 fetch 函数
下面是一个实用示例,使用 Map 缓存 GET 请求结果:
HTTP ${res.status}
调用方式和原生 fetch 类似:cachedFetch('/api/user/123')。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
注意事项与优化点
Map 缓存是内存级的,页面刷新即丢失,适合单页应用(SPA)内短期复用。使用时注意:
- key 要唯一且稳定:GET 参数顺序、空格、编码差异会导致不同 key;建议对查询参数做标准化(如排序后拼接)
- 避免缓存敏感数据:登录态、个人隐私类接口慎用,或设置极短 ttl
-
手动清理能力:提供
clear()或按 key 删除方法,便于调试或登出时清空 -
并发请求重复触发:当前实现未防抖,同一 URL 多次快速调用仍可能发多次请求;进阶可用
Promise缓存 +then共享解决
扩展:支持 POST 或复杂请求的缓存键生成
对于非 GET 请求,不能只靠 URL。可基于请求方法 + URL + body 内容哈希生成 key(简单场景可用 JSON.stringify(body)),例如:
function generateCacheKey(url, options) {
const { method = 'GET', body } = options;
if (method.toUpperCase() === 'GET') return url;
return `${url}:${method}:${JSON.stringify(body)}`;
}
再将此 key 传入 cache.get() 即可。注意 body 必须是可序列化的对象(不能含函数、undefined、Date 等)。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










