1. IndexedDB 在 PWA 离线数据存储的工程价值
IndexedDB 在 PWA 离线数据存储中有哪些工程价值?其事务与索引机制如何正确使用?
- IndexedDB 的结构化存储模型(对象仓库、索引、事务)
- 离线数据的读写与查询模式
- 异步 API 的工程封装与兼容
IndexedDB 是 PWA 离线数据的主存储:存结构化对象(用户数据、离线队列、草稿、缓存元数据),容量远大于 localStorage(可达数百 MB 至 GB 级),支持索引查询(按字段建索引、游标范围遍历)与事务(readonly/readwrite 保证多操作原子性)。工程价值:离线优先架构的"数据底座"——离线写入先落 IndexedDB,联网后同步;缓存元数据与业务数据分离管理;配合 SW 在后台读写(SW 与页面共用同源 IndexedDB)。使用要点:API 是异步的(request 回调/IDB 包装成 Promise),事务在事件循环内自动提交(勿在事务外异步操作同一事务);索引与唯一约束设计影响查询性能;存储清理策略(版本迁移 onupgradeneeded、容量估算);异常处理(QuotaExceededError、事务 abort);可用 idb 等轻封装库减少样板代码。兼容性:现代浏览器全支持,iOS Safari 的稳定性与容量需实测降级。
回答按"存储模型 → 离线工程价值 → 事务/索引正确用法 → 封装与兼容"组织,突出"原子事务"与"异步封装"两个易错点。