feat(leaderboard): 预计算快照消除首开延迟
- leaderboard 云函数重写为快照架构:定时触发离线算日/月/年三榜写入
leaderboard_snapshot 集合(约 50ms 单次 get),请求默认读快照,force 才
实时重算并回写;快照缺失/过期自动回退实时路径,老客户端零改动兼容
- config.json 加每 4 分钟定时器 snapshotTimer
- _persistSnapshot 修复 wx-server-sdk 写操作需 { data: {...} } 包裹的坑
(裸 set(data) 报 parameter.data should be object instead of undefined)
- app.js onLaunch 预热排行榜,覆盖"开 App→点榜"常见路径
- leaderboard.js 更新过时"全表扫描 2-3s"注释
This commit is contained in:
@@ -71,8 +71,9 @@ Page({
|
||||
|
||||
// 乐观缓存:命中该 period 的近期缓存就先秒显旧数据,后台再静默拉新。
|
||||
// 命中时不进 loading 骨架屏(避免旧数据被空白覆盖),用 refreshing 标记
|
||||
// 后台刷新状态;未命中才显示骨架屏。云函数全表扫描冷启动可达 2-3s,
|
||||
// 这层客户端缓存把"重复进入 / 切 period"的等待几乎降到无感。
|
||||
// 后台刷新状态;未命中才显示骨架屏。云函数现直接读预计算快照(1 次 get≈50ms),
|
||||
// 网络往返本身已极快;这层客户端缓存进一步把"重复进入 / 切 period / 弱网"的
|
||||
// 等待降到无感,并兜底离线。(训练后带 force 的那次才会实时重算并回写快照。)
|
||||
const cached = storage.getLeaderboardCache(period)
|
||||
if (cached && cached.rankedList) {
|
||||
this.setData({
|
||||
|
||||
Reference in New Issue
Block a user