本功能仅优化数据读取与上游认证检查,不改变模型生成速度,不迁移 9119 数据库,也不替代 iOS 本地缓存。
UpstreamServiceSession 将成功的状态/身份检查复用 30 秒,并合并同一时间的并发检查。每个客户端请求仍执行 8800 的用户、角色或配对设备授权。
上游返回 401 时仅对该请求重新认证并重试一次;并发 401 共用登录任务。不会因为网络超时或 5xx 自动重放写请求。服务账号配置变化会立即使租期及读取缓存失效;旧验证或登录响应不能覆盖新凭据。鉴权端点本身不进入读取缓存。
| 数据 | 新鲜期 | 后台刷新宽限 |
|---|---|---|
| Profile/身份列表 | 5 秒 | 15 秒 |
| 模型选项 | 30 秒 | 60 秒 |
| 会话列表、团队/话题列表 | 2 秒 | 无 |
| 会话详情、最近消息、团队详情 | 1 秒 | 无 |
| 已加载的较早消息页 | 10 秒 | 无 |
仅缓存白名单 GET 的成功 JSON。容量上限为 64 MiB / 512 项,每项不超过 2 MiB,使用 LRU 淘汰;相同读取会合并。缓存键包含已验证的 8800 用户/授权版本或配对设备、上游 Cookie 的摘要、Profile、分页参数和请求头。缓存键不记录原始凭据。
后台推送确认、命令回执、鉴权、搜索、未读确认、团队游标能力端点、增量 afterSeq、Range/条件读取以及错误响应不缓存。上游显式 no-store 或 Set-Cookie 响应不缓存。
这是服务端应用数据缓存,而不是浏览器 HTTP 缓存。浏览器仍可保持 cache: no-store。客户端需要强制最新数据时可发送 X-Yaoyao-Cache: bypass;内部调用可指定 cache: 'reload'。
UpstreamClient.readCache.stats() 提供进程内命中、未命中、合并、淘汰、内存及在途数量,用于测试和诊断,不公开缓存内容。