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:
@@ -3,6 +3,7 @@ const cloud = require('./utils/cloud')
|
||||
const storage = require('./utils/storage')
|
||||
const darkMod = require('./utils/darkMode')
|
||||
const voice = require('./utils/voice')
|
||||
const config = require('./config')
|
||||
|
||||
App({
|
||||
async onLaunch() {
|
||||
@@ -33,6 +34,16 @@ App({
|
||||
// Init cloud storage (no-op if not configured)
|
||||
cloud.init()
|
||||
|
||||
// P1 排行榜预热:App 启动即后台触发一次榜单请求,提前填充云函数实例/快照,
|
||||
// 用户点进排行榜时已是热路径,首开等待从 2-3s 降到近乎无感。
|
||||
// fire-and-forget,不 await,不阻塞启动链路;失败静默忽略。
|
||||
if (cloud.enabled) {
|
||||
wx.cloud.callFunction({
|
||||
name: 'leaderboard',
|
||||
data: { period: 'day', maxRank: config.leaderboardMaxRank }
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
const settings = wx.getStorageSync('user_settings')
|
||||
if (!settings) {
|
||||
wx.setStorageSync('user_settings', {
|
||||
|
||||
Reference in New Issue
Block a user