优化用户体验的小点:乐观更新链路 双数据库查询

乐观更新链路

不等后端返回,乐观假设update成功,立刻更新ui,失败回滚

针对create delete update操作

js 复制代码
// 1. save current state (for rollback)
const prevCharts = [...charts]

// 2. update charts immediately
setChart(charts,filter(chart => chart.id !== chartId))
showSuccess('Chart deleted')

//3. then try api to avoid blockage 
try{
	await deleteChart(chartId)
} catch(error){
	setChart(prevCharts)
	showError('Failed to delete chart')
}
js 复制代码
//recent dashboard click
navigate('/dashboard/${dashboardId}', {
	state:{cacheData:dashboard}
})


// dashboard 页面显示之前的本地缓存 component receive cache data
const {state} = useLocation()
if(state?.cacheData){
	setDashboard(state.cacheData)
}

// 后台验证最新的数据展示到前端
fetchLatestDashboard(dashboardId).then(latest => {
	setDashboard(latest)
})

双数据库架构

  1. 一个数据库用于查询数据给用户观察
    • 数据仓库
    • 只读
    • 大数据
    • 链接pool
  2. 另一个数据用于记录用户操作情况
    • 高频读写 curd
    • 异步连接 (async避免阻塞)
    • 存储用户信息和行为记录
    • 事务支持

//todo 无Redux状态管理 SSE防抖更新 SQL自动修正

相关推荐
姜太小白1 小时前
【Oracle】记排查sh脚本调用SQL执行卡顿的排查总结
数据库·sql·oracle
bgy66661 小时前
MariaDB 数据库 基础详解
数据库·mariadb
自动化监测Learner1 小时前
QGIS 把geojson数据导入 PostgreSQL/PostGIS 的完整流程
数据库·postgresql
虎虎(_ _)。゜zzZ1 小时前
Qdrant向量数据库工程实战
数据库·人工智能·大模型·向量数据库·rag·qdrant
ZGG0032 小时前
线程池详解:从 7 大参数到生产避坑
java·数据库·后端
龙亘川2 小时前
数智赋能退役军人服务:V1.0 系统搭建全生命周期闭环服务体系
大数据·数据库·人工智能
zhangguojia72 小时前
权限弹窗点击允许的授权流程
运维·服务器·数据库
jnrjian2 小时前
Postgres 序列(sequence)的权限
数据库·postgresql
风禾万里3 小时前
【无标题】
数据库
镜舟科技3 小时前
为什么 Text-to-SQL 总是停在 Demo?
数据库·sql·demo·text-to-sql·镜舟科技·mip·语义视图