/** * 短缓存:内存 Map,按 key 缓存异步结果(TTL 毫秒)。 * 用于列表类接口(活动/题目/配置),减少重复请求与"空→内容"跳变。 * 仅前端缓存,不影响后端数据。 */ const store = new Map(); export async function cached(key, ttl, fn) { const hit = store.get(key); if (hit && Date.now() - hit.t < ttl) return hit.data; const data = await fn(); store.set(key, { t: Date.now(), data }); return data; } /** 清空全部缓存(登出/主动刷新时用) */ export function clearCache() { store.clear(); }