refactor: 移除前端接口缓存 — 每次 onShow 都实时请求最新数据
This commit is contained in:
@@ -110,21 +110,11 @@ import type { Dashboard } from '@/api/admin'
|
||||
const loading = ref(true)
|
||||
const dashboard = ref<Dashboard | null>(null)
|
||||
|
||||
// 仪表盘缓存(5分钟内不重复请求)
|
||||
let dashboardCache: { data: Dashboard; time: number } | null = null
|
||||
const CACHE_TTL = 5 * 60 * 1000
|
||||
|
||||
onMounted(async () => {
|
||||
await waitForReady()
|
||||
|
||||
try {
|
||||
// 检查缓存是否有效
|
||||
if (dashboardCache && Date.now() - dashboardCache.time < CACHE_TTL) {
|
||||
dashboard.value = dashboardCache.data
|
||||
} else {
|
||||
dashboard.value = await getDashboard()
|
||||
dashboardCache = { data: dashboard.value, time: Date.now() }
|
||||
}
|
||||
dashboard.value = await getDashboard()
|
||||
} catch (e: any) {
|
||||
uni.showToast({ title: e.message || '加载失败', icon: 'none' })
|
||||
} finally {
|
||||
@@ -132,13 +122,10 @@ onMounted(async () => {
|
||||
}
|
||||
})
|
||||
|
||||
// 静默刷新(强制刷新缓存)
|
||||
async function refreshDashboard(force = false) {
|
||||
// 静默刷新
|
||||
async function refreshDashboard() {
|
||||
try {
|
||||
if (force || !dashboardCache || Date.now() - dashboardCache.time >= CACHE_TTL) {
|
||||
dashboard.value = await getDashboard()
|
||||
dashboardCache = { data: dashboard.value, time: Date.now() }
|
||||
}
|
||||
dashboard.value = await getDashboard()
|
||||
} catch {}
|
||||
}
|
||||
|
||||
@@ -148,7 +135,7 @@ onShow(() => {
|
||||
})
|
||||
|
||||
onPullDownRefresh(async () => {
|
||||
await refreshDashboard(true)
|
||||
await refreshDashboard()
|
||||
uni.stopPullDownRefresh()
|
||||
})
|
||||
|
||||
|
||||
@@ -204,18 +204,9 @@ function openLink(url: string) {
|
||||
// #endif
|
||||
}
|
||||
|
||||
// 数据新鲜度控制(30秒内不重复请求)
|
||||
let lastLoadTime = 0
|
||||
const CACHE_TTL = 30000
|
||||
|
||||
async function loadData(silent = false, force = false) {
|
||||
async function loadData(silent = false) {
|
||||
await waitForReady()
|
||||
|
||||
// 数据新鲜度判断:30秒内不重复请求
|
||||
if (!force && silent && Date.now() - lastLoadTime < CACHE_TTL) {
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
if (!silent) loading.value = true
|
||||
loadError.value = false
|
||||
@@ -226,7 +217,6 @@ async function loadData(silent = false, force = false) {
|
||||
txStore.fetchTransactions({ page: 1 })
|
||||
])
|
||||
recentTx.value = txStore.transactions.slice(0, 5)
|
||||
lastLoadTime = Date.now()
|
||||
|
||||
// 第二级:次要数据(异步,不阻塞首屏)
|
||||
Promise.all([
|
||||
@@ -270,13 +260,12 @@ onMounted(() => {
|
||||
})
|
||||
|
||||
// Refresh data when returning from other pages (e.g., after adding a transaction)
|
||||
// force=true 跳过缓存 TTL,确保新记录立即可见
|
||||
onShow(() => {
|
||||
if (initialLoaded.value && !loading.value) loadData(true, true)
|
||||
if (initialLoaded.value && !loading.value) loadData(true)
|
||||
})
|
||||
|
||||
onPullDownRefresh(() => {
|
||||
loadData(false, true).finally(() => uni.stopPullDownRefresh())
|
||||
loadData().finally(() => uni.stopPullDownRefresh())
|
||||
})
|
||||
|
||||
function goAdd(type: string) {
|
||||
|
||||
Reference in New Issue
Block a user