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

乐观更新链路

不等后端返回,乐观假设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自动修正

相关推荐
程序员Sunday4 分钟前
Redis 缓存穿透、击穿、雪崩怎么区分?从回源压力找原因
数据库·redis·缓存
我科绝伦(Huanhuan Zhou)8 分钟前
磐维数据库(PanWeiDB)日常运维命令总结
运维·数据库
guo_wen_qiang14 分钟前
redis实现秒杀功能-超卖&库存遗留问题的解决
数据库·redis·缓存
逐流人19 分钟前
Redis内存数据库:从数据类型到集群部署
linux·运维·数据库·redis·缓存·云计算
l1t31 分钟前
DeepSeek总结的在 NVIDIA Vera 上对 DuckDB v2.0-dev 进行基准测试
服务器·数据库·sql
渣渣盟39 分钟前
2000万QPS背后的存储引擎博弈:InnoDB、MyRocks、WiredTiger到底谁更强?
数据库·mysql
ss2731 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 11 PostgreSQL安装部署常见问题排查与解决
数据库·笔记·postgresql
张张123y1 小时前
# 后端第八课:数据库入门(给 FastAPI 接口加上“记忆“,存下问答历史)
数据库·sql·mysql·oracle·fastapi·sqllite
cspttty1 小时前
2027秋招市场调研岗:统计学专业如何补齐业务、SQL与研究交付能力
大数据·数据库
BD_Marathon1 小时前
Milvus数据库的DML操作
数据库·milvus