Appearance
im项目本地数据库方案
分析
本地存储方案:
- 浏览器api
localStorage
:存储容量有限indexdb
:缺点:无法初始化数据库的值
- json 存储:用这种方案操作数据是需要把文件中的所有数据都加载到客户端电脑的内存中去的,由于没有索引机制,关联查询、条件查询等操作效率不高。
lowdb
- 本地数据库
sqlite
最终选择:
sqlite
+ typeorm
,因为sqlite存储量大,typeorm简化了sql的操作
使用思路
在im中,需要读取和存储的情况有:
- 无网情况:读取本地的消息
- 有网情况:先读取本地消息,如果返回的最后一条消息的id,如果与本地的id一致,则不发送请求,直接使用本地数据库消息;不一致,采用请求获取的消息,然后更新本地数据库。
对于频繁过多的消息,采用防抖处理,过几秒再去更新本地数据库。