在分页查询的情况下,前端或者移动如何处理后端数据的实时更新。

类似于Twitter的这种网站的在浏览的过程中原来的数据已经增加了,如果是采取分页的方式获取数据,这里的数据源已经发生改变了,直接获取的方式应该数据获取重复的,但是并没有发生发生错误的。请问这样的后端api应该如何设计。比如segmentfault的分页,segmentfault如何分页如果有人回到了问题会直接排到前面,这个时候如果Android去获取第二页的数据这个时候和原来的数据已经不一样了,如何避免数据重复或者的缺失的问题。后端应该如何处理,移动端是否应该也做出过滤等处理。我并不做过这样的项目,所以可能思考的有问题。

阅读 12.6k
6 个回答

我知道的有两种方案处理分页数据更新的问题

一般业务数据,论坛数据都采用这种方法

第一种方案

根据当前数据库中的数据,按一定规则排序(比如最后更新),按所需要的页面获取数据。这种方法不会去关注后台数据位置的变化,所以比较极端的情况下可能会出现你翻第二页却发现看到的内容没变,因为这段时间正好新增了页数这么多条数据……

第二种方案

获取数据的时候记录一个时间戳,每次取数据都把这个时间戳传到后台。后台按这个时间戳作为截止时间获取分页数据,返回出来。但是因为需要通知前端有新数据,所以还要按这个时间戳检索新数据条数,一并返回。前端按后端返回的数据展示,同时检查如果有新数据的话,进行提醒。

这种方法不太适用于按数据更新排序的情况,适用于按新增时间排序的情况。一般订阅数据,或者几乎不改动的数据可以采用这种方法。

新手上路,请多包涵

用ajax来实现实现数据刷新

可以尝试前端使用PouchDB,服务器再部署一个CouchDB
前端的PouchDB可以缓存数据,并和后端CouchDB保持实施更新,在后端数据库有数据更新时,PouchDB会回调, 官方的文档也写的挺好的,上手很容易。
当然也可以采取使用AJAX轮询的方案。

实时更新的留言板(React+Redux+PouchDB+CouchDB)

给每一条数据设一个id,根据id去加载id之前或之后的多少条数据

有人回答就提交到前面,肯定是以修改时间排序的呗
如果你重新获取分页的时候想一样的话,那么久是第一次多传送一点,不多次ajax
如果你想每次获取最新的,那么就是每次都请求ajax分页,获取到的是什么,都无所谓啊,反正是最新的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏