浪花朵朵

点滴积累,持之以恒

移动端的分页缓存

数据存储

移动端数据存储选用的是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时,如果数据量很大时前端数据展示比较慢。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011616513/article/details/52372090
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

移动端的分页缓存

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭