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

乐观更新链路

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

相关推荐
海南java第二人7 小时前
Nebula Graph 实战:基于图数据库存储 CMDB 实体关系
数据库·图数据库·nebula
曹牧7 小时前
oracle:“not all variables bound”
数据库·oracle
数据库百宝箱7 小时前
Oracle RMAN Image Copy 本地恢复
数据库·oracle
zuYM4g7Dp9 小时前
NoSql数据库设计心得
数据库·nosql
睡不醒男孩03082310 小时前
第七篇:揭秘 PostgreSQL 数据库内核级管控:CLup 深度架构设计与高可用底座技术白皮书
数据库·postgresql·clup
cmes_love11 小时前
Level 2逐笔成交历史数据下载方法笔记
数据库·笔记·oracle
swordbob11 小时前
MySQL字符集陷阱:从Oracle迁移踩坑到utf8mb4强制规范
数据库·sql
牛油果子哥q11 小时前
【C++ STL string 】C++ STL string 终极精讲:底层原理、内存机制、全套API、深浅拷贝、易错坑点与工程实战规范
数据库·c++
十五年专注C++开发12 小时前
MySql中各种功能用sql语句实现总结
数据库·sql·mysql
数据库小学妹12 小时前
AI时代数据库怎么选?多模融合、数据统一存储与选型实战指南
数据库·人工智能·经验分享·ai