【问题标题】:What are the best practices in pagination? [closed]分页的最佳实践是什么? [关闭]
【发布时间】:2018-09-21 05:47:22
【问题描述】:

我在 .NET 中做一个 MVC Web 项目,并且是一种显示列表和分页的最佳方式。我有 3 个选项

  1. 我可以使用 Jquery Tables(Data Table JS) 显示表格。
  2. 我可以使用 MVC 分页。
  3. 使用 SP 手动处理分页。

选项 1 将使用 AJAX 一次获取所有数据,而 table js 将自行处理分页。我们不必担心分页,但是如果要处理一个庞大的数据集,那么拥有这个是否明智?因为每次它都会加载所有数据。

选项 2 将仅获取需要显示的数据(由 set 设置),但每次可能会向服务器端触发请求。(这将管理控制器级别 IPagedList 中的分页)

选项 3 也将只从数据库级别获取我们需要的数据。与选项 2 相同,将为每个页面更改 const 服务器请求。

那么什么是最好的选择,我们不得不考虑两种可能的情况。是大数据集还是小数据集。

这样做的最佳方法是什么?感谢任何解释?

【问题讨论】:

标签: c# asp.net-mvc datatables jquery-pagination


【解决方案1】:

一个明显的解决方案是使用选项 2。但是用户可以配置每页的记录,这样如果每页的记录较少,那么它将在浏览器中即时加载并快速从服务器中提取数据。用户从来没有准备好尽快看到加载他们想要的结果。

如果您提供排序功能,您还需要注意网格中的排序。意味着您需要对整个数据集进行排序,而不仅仅是在当前数据集中。

此外,您还可以在网格上提供过滤器。同样的问题,您需要过滤整个数据集。

因此,这种方法既适用于小型数据集,也适用于大型数据集。

【讨论】:

    【解决方案2】:

    我想说总是最好只加载您需要的数据。为什么要加载根本不可见的数据?

    考虑是否让 GUI 框架在客户端处理分页:

    • 您根本不必为此烦恼。此外,过滤和排序也很可能在客户端处理。
    • 对于初学者来说更容易实现。
    • 如果您的应用程序仅在 Intranet 上运行,则让客户端处理更大的数据集可能完全没问题(从性能的角度来看)。

    考虑是否您自己处理分页:

    • 您还必须实现排序和过滤!如果您在服务器上进行分页,则不能在客户端上进行排序和过滤。这种实现可能相当麻烦。
    • 它加载数据的速度要快得多,因为您不会收到任何无论如何都不会显示的数据。

    因此,您应该采取的措施很大程度上取决于您的数据、基础架构和受众。

    Pagination: Server Side or Client Side? 上提到了更多的优点

    【讨论】:

    • 是的,因为我觉得这取决于数据。但是当谈到项目的可扩展性时,我有疑问。目前这个项目不会有大数据集。但如果我们在未来考虑,谁知道客户是否想要扩展它。这会是建筑方面的问题吗?
    • 我不得不以艰难的方式学习它(不幸的是多次):客户拥有的数据比您预期的要多。总是!所以最好从一开始就做...
    【解决方案3】:

    根据您的选择,

    1. 我可以使用 Jquery Tables(Data Table JS) 显示表格。

    Datatable 是一个很好的选择,它带有更多其他功能,如过滤、搜索、排序、信息等等。

    根据您的数据集大小,您应该在客户端实现和服务器端实现之间进行选择。如果您的行数少于 4000,我建议您在客户端使用数据表。

    但是,如果您有非常大的数据集,请确保对数据表使用服务器端实现。 这个link 这里给出了如何为datatable 实现服务器端模块的步骤

    【讨论】:

    • 是的,我同意你的看法。我也会参考服务器端的实现。
    • 是的,拜托。因为很多人不知道数据表中的大型数据集还有另一种解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2011-11-21
    • 2010-09-13
    • 1970-01-01
    • 2014-03-25
    • 2010-09-08
    相关资源
    最近更新 更多