2017-07-27 24 views
0

假设我有一个端点返回一个10k结果的数组。我希望他们在包含页面的表格中显示。考虑用户体验的最佳方式是什么?在一次来自API的分页结果 - 分页和UX

  1. 取一切,分页
  2. 获取该网页的用户正在访问的结果,显示它们并重新获取一切

我知道,第二个选项是比较慢的,但它可以防止取多次。 你会选择哪一个?

PS我知道,在涉及SO法规时,这可能不是一个好问题,但我在现实世界的应用程序中几乎没有经验,并且想知道它是如何完成的。

+0

10k结果并不代表收集信息所需的实际工作量,也不代表每个结果中的数据量。 现实世界中的任何人都不会将它全部下载到客户端,如果它的工作负载很重要收集页面的信息 - 尝试尽可能使用缓存 –

+0

@DimaVinogradov 10k结果。每一个都是一个简单的对象,具有'id','title','description'。整体响应大小约为900kb。 – Ancinek

+1

那么,一个人会前后翻页1-2页,如果这样不能产生足够的信息 - 过滤器应该被应用 -底线,分页并且每次只检索一页 –

回答

1

事实上,你是正确的,它不是最好的问题,当涉及到SO注册,但我觉得它是一个有效的。

您应该只加载当时需要的项目,每个请求都会去获取结果。每页25个的例子是:最初你可能会得到0-25的结果,然后当用户点击第2页时,你将获取结果25-50等等......

+0

而且让我们说我有一个更小的阵列,就像50个物体一样,但可能会增长。我决定每页打10页,但是我的分页栏最多可以容纳9个页码。我如何知道我应该在那里装多少? – Ancinek

+0

你会尽快找出你需要多少页面(在javascript中:let pagesCount = Math.ceil(resultsCount/perPage)) – Stuart

+0

是的,但它需要获取所有数据并对其进行计数。然后,每页获取它们没有意义。 – Ancinek

1

你不应该一次加载10k结果。您应该只加载一些限制项目(可能是10,20,50 ...等等)。 如果你检查你的API,可能有一个limit URL参数和一些叫start?如果是的话,你可以定义你想要的结果以及从哪里开始。因此,您可以将“分页”发送到API,并且只需要从第100位获得50个结果。

+0

是的,在这个端点上有'offset'和'limit'过滤器。每次用户点击页面时,我都会坚持提取。 – Ancinek