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

乐观更新链路

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

相关推荐
5***E6853 小时前
【SQL】写SQL查询时,常用到的日期函数
数据库·sql
遇见火星3 小时前
CentOS7 通过源码安装 Redis
数据库·redis·缓存
Mr.朱鹏4 小时前
RocketMQ安装与部署指南
java·数据库·spring·oracle·maven·rocketmq·seata
Coder-coco4 小时前
个人健康管理|基于springboot+vue+个人健康管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·mysql·论文
K哥11254 小时前
【9天Redis系列】基础+全局命令
数据库·redis·缓存
s***46984 小时前
【玩转全栈】----Django模板语法、请求与响应
数据库·python·django
f***R84 小时前
redis分页查询
数据库·redis·缓存
g***72704 小时前
【mysql】导出导入mysql表结构或者数据
数据库·mysql
煎蛋学姐4 小时前
SSM汽车租赁管理系统mfobv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·汽车·ssm 框架·汽车租赁管理系统
w***37514 小时前
Spring 核心技术解析【纯干货版】- Ⅶ:Spring 切面编程模块 Spring-Instrument 模块精讲
前端·数据库·spring