【Java】翻页 cursor与page翻页
后端返回数据的接口需要翻页设计,防止客户端一次性请求大量数据。传统的方式是page+limit。通过page和limit可以计算出从哪里开始拿数据,以及需要拿多少条。另一种方式是cursor+limit。cursor是一个游标,可以是id或者时间戳等,总之可以唯一标识一条数据,并且存储时会按照该字段排序。每一次访问时带上前一次返回的cursor,服务端就返回cursor之后的limit条数据以及下
·
后端返回数据的接口需要翻页设计,防止客户端一次性请求大量数据。传统的方式是page+limit。通过page和limit可以计算出从哪里开始拿数据,以及需要拿多少条。另一种方式是cursor+limit。cursor是一个游标,可以是id或者时间戳等,总之可以唯一标识一条数据,并且存储时会按照该字段排序。每一次访问时带上前一次返回的cursor,服务端就返回cursor之后的limit条数据以及下一次请求时的cursor。
推荐使用cursor的分页方式。原因有:
使用page+limit的方式,如果在访问当前页时,老的数据有插入,那么本次返回的一页数据就会可能重复;另外每一次也需要计算从哪里开始。但是cursor方式必须有唯一排序键。
另外,使用cursor方式,需要考虑分页点数据相同问题,不然会有重复数据,另外如果一页数据都相同,可能造成无法翻页。
解决方式是将cursor相同的数据全部下发。
更多推荐
所有评论(0)