数据存储
移动端数据存储选用的是localStorage,HTML5中新增的API,localStorage特点:
1) 永久存储,除非手动删除。
2) 通过key,value进行存储,用法简单,无需下载插件。
3) 只能存字符串。可以通过JSON.stringify将对象转化为字符串,再通过JSON.parse将字符串转化为对象。
4) 存储容量上限:10M。
5) 同步存储数据。
分页问题
假如分页缓存的数据大小为100条,服务器总共有0-1000条数据,本地缓存了500-0条,当下拉刷新获取服务器1000-900条,上拉加载继续从服务器中获取900-800,800-700,700-600,此时从服务器中获取的数据与本地存储的数据在一个时间轴上,没有数据丢失。假如上拉加载到900-800条数据时断网了,下次下拉刷新从服务器中又获取最新的1100-1000条,本地缓存中会有800-700,700-600的数据丢失,长期以往,本地缓存没有把旧的数据衔接上,导致前端展示会有数据丢失。
移动端缓存
为了解决上述问题,在server端写分页缓存服务,每个item数据都有对应的时间:theLastUpdateTime,当item有状态改变,更新这个时间theLastUpdateTime为当前时间,根据所有item的theLastUpdateTime时间字段进行由大到小排序(最前面显示的是最新的数据),有一个总的属性:theLastUpdateTime更新为最新数据中的theLastUpdateTime时间。 接口需要传的参数:id,startDate,endDate。
移动端第一次从server端拿数据是将server端所有数据缓存到本地,并将theLastUpdateTime存储下来作为下一次请求server的startDate,下次请求时获取server端有数据更新的数据,并将本地缓存的数据进行替换,这样也解决了数据实时更新问题。
这种方式的优势:时间轴上不会有数据的丢失。
劣势:当第一次访问server时,如果数据量很大时前端数据展示比较慢。