MobileSilergytest

Offline Sync (弱网同步)

Project: Silergy Smart PDA
简历背景

"通过本地缓存优化,确保在弱网环境下也能流畅作业..."

面试题

PDA 在仓库弱网环境下的"断网续传"和"数据冲突"是怎么设计的?

核心机制是 "Command Queue" (指令队列) + "IndexedDB/Storage"。用户操作(如盘点录入)不再直接发请求,而是先存入本地 Queue,UI 乐观更新(Optimistic UI)。网络恢复监听器 (Network Listener) 触发队列消费。冲突解决采用 "Last Write Wins" 或服务端版本号校验。
**架构设计:** 1. **Local First:** 所有读取操作优先读 LocalStorage/SQLite。 所有写入操作封装成 Event (e.g., `{ type: 'SCAN_ITEM', payload: {...}, timestamp: 123 }`)。 2. **Sync Manager:** 一个后台进程(在 UniApp 里可能是个全局 watcher)。 监听 `uni.onNetworkStatusChange`。 一旦 Online,遍历 Queue,按序执行 API。 3. **冲突处理 (Conflict Resolution):** - **场景**: A 离线修改了库存 10->9。B 在线修改了 10->8。A 提交时... - **策略**: 1. 服务端加锁/版本号 (Optimistic Locking)。A 提交时带上版本 v1,服务端发现当前是 v2,拒绝。 2. 前端提示用户:"数据已过期,请刷新后重试"。 3. 对于非关键数据(如日志),直接追加。
10 / 20