Har*_*ngk 5 javascript mysql api rest android
我正在移动客户端上构建一个即时通讯工具,它通过 HTTP 请求与 RESTful API 进行交互。分页端点非常标准 - 它具有起始位置(偏移量)和页面中的项目数(限制)。当数据库可以快速更改时,我无法弄清楚如何确保 100% 数据与分页的一致性。
例如,如果有几十个参与者,在一秒钟内对话中可能会有十几条新消息。我认为猜测其中一些消息可以在 HTTP 分页请求从服务器返回的时间内更改数据库并不牵强。幸运的是,由于这是一个信使我不必考虑数据删除的可能性,只考虑数据添加。
在我的研究中,以下两个链接很有帮助,但没有提供明确的解决方案:
当结果集可能发生变化时,如何使用 RESTful API 实现健壮的分页?
我能想出的唯一潜在解决方案是使用先前获取的页面中最后一个对象的时间戳。因此,HTTP 查询将时间戳作为参数,服务器将返回在该时间戳之后创建的对象页面。
有没有我没有看到的潜在问题,或者甚至更好,这个问题的更好解决方案?
看来我想到的方法有一个名字——基于光标的分页。
下面的链接有很好的图形描述和解释,以及 php 中的示例。
http://www.sitepoint.com/paginating-real-time-data-cursor-based-pagination/
Django Framework 还提供了一个有用的指南,它比较了两种不同的分页技术(LimitOffsetPagination 和 CursorPagination)。
http://www.django-rest-framework.org/api-guide/pagination/
基于光标的分页需要独特的、不变的项目顺序。Facebook 和 Twitter 使用一些生成的 ID。对于我来说,我决定在对象创建时简单地使用时间戳,因为它支持高达毫秒的精度。现在应该足够好了。
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |