离线存储的三个等级
| 等级 | 能力 | 代价 |
|---|---|---| | 统一会话缓存 | 返回已访问页面立即显示,刷新后丢失 | 内存 Map + 请求去重 + 后台刷新 | | 持久化只读缓存 | 刷新/断网后仍可阅读最近内容 | IndexedDB;仍不能可靠离线编辑 | | 完整离线存储 | 断网可增删改,联网后同步 | Service Worker + 离线操作队列 + 冲突合并 |
完整离线存储的四个部分:持久化数据层(IndexedDB)、应用外壳离线化(Service Worker / Cache Storage,否则断网连页面都打不开)、离线修改队列、同步与冲突处理(版本号 / updatedAt / 内容合并)。
判据:
- 缓存解决的是「有网络时把等待从用户面前挪到后台」,不会让第一次请求凭空消失,也不消除鉴权与数据库的真实耗时。
- 完整离线编辑涉及临时 ID、同步队列、版本冲突、附件同步,与「页面切换慢」不是同一个问题,不要塞进同一个 Issue。
- 私有内容缓存必须按账号隔离(
userId + resourceId),登出/切号清空;私人笔记不能进公共 CDN 缓存。 - 列表只缓存轻量字段(标题、摘要、更新时间),正文按需加载。