分页的最佳实践是什么?
What are the best practices in pagination?
我正在 .NET 中做一个 MVC web 项目,并且正在考虑显示列表和分页的最佳方式。我有 3 个选项
- 我可以使用 Jquery Tables(Data Table JS) 显示 table。
- 我可以使用 MVC 分页。
- 正在使用 SP 手动处理分页。
选项 1 将使用 AJAX 一次获取所有数据,table js 将自行处理分页。我们不必担心分页,但如果它是一个巨大的数据集来处理,那么这样做是否明智???,因为每次它都会加载所有数据。
选项2将只获取需要显示的数据(Set by set),但每次请求都可能触发到服务器端。(这将在控制器级别IPagedList中管理分页)
选项 3 也将只从数据库级别获取我们需要的数据。与选项 2 相同,将对每个页面更改进行 const 服务器请求。
那么什么才是最好的选择,我们要考虑两种情况而定。是大数据集还是小数据集。
最好的方法是什么?感谢任何解释?
一个明显的解决方案是选择选项 2。但是用户可以配置每页的记录,这样如果每页的记录较少,那么它将在浏览器中即时加载并从服务器中提取数据迅速地。用户永远不会准备好看到他们想要尽快获得结果的加载。
如果您提供排序功能,您还需要注意网格中的排序。意味着您需要在整个数据集中排序,而不是仅在当前数据集中排序。
此外,您还可以在网格上提供过滤器。同样的问题,你需要过滤整个数据集。
所以这种方法适用于小型数据集和大型数据集等两种情况。
根据您的选择,
- I can show the table using Jquery Tables(Data Table JS).
Datatable
是一个很好的选择,它带有更多其他功能,例如过滤、搜索、排序、信息等等。
根据您的数据集大小,您应该在客户端实现和服务器端实现之间做出选择。如果您的行数少于 4000,我建议您在客户端使用数据表。
但是,如果您的数据集非常大,请确保对数据表使用服务器端实现。
link 这里给出了如何为 datatable
实现服务器端模块的步骤
我认为最好只加载您需要的数据。为什么要加载根本不可见的数据?
考虑是否让 GUI 框架在客户端处理分页:
- 您完全不必为它操心。过滤和排序也很可能在客户端处理。
- 初学者更容易实施。
- 如果您的应用程序只在 Intranet 上 运行,让客户端处理更大的数据集可能完全没问题(从性能的角度来看)。
考虑考虑是否自己处理分页:
- 您还必须实现排序和筛选!如果您在服务器上进行分页,则无法在客户端进行排序和过滤。这种实现可能会很麻烦。
- 它加载数据的速度要快得多,因为您不会收到任何无论如何都不会显示的数据。
因此,您应该高度重视的内容取决于您的数据、基础架构和受众。
在Pagination: Server Side or Client Side?
上提到了更多优点
我正在 .NET 中做一个 MVC web 项目,并且正在考虑显示列表和分页的最佳方式。我有 3 个选项
- 我可以使用 Jquery Tables(Data Table JS) 显示 table。
- 我可以使用 MVC 分页。
- 正在使用 SP 手动处理分页。
选项 1 将使用 AJAX 一次获取所有数据,table js 将自行处理分页。我们不必担心分页,但如果它是一个巨大的数据集来处理,那么这样做是否明智???,因为每次它都会加载所有数据。
选项2将只获取需要显示的数据(Set by set),但每次请求都可能触发到服务器端。(这将在控制器级别IPagedList中管理分页)
选项 3 也将只从数据库级别获取我们需要的数据。与选项 2 相同,将对每个页面更改进行 const 服务器请求。
那么什么才是最好的选择,我们要考虑两种情况而定。是大数据集还是小数据集。
最好的方法是什么?感谢任何解释?
一个明显的解决方案是选择选项 2。但是用户可以配置每页的记录,这样如果每页的记录较少,那么它将在浏览器中即时加载并从服务器中提取数据迅速地。用户永远不会准备好看到他们想要尽快获得结果的加载。
如果您提供排序功能,您还需要注意网格中的排序。意味着您需要在整个数据集中排序,而不是仅在当前数据集中排序。
此外,您还可以在网格上提供过滤器。同样的问题,你需要过滤整个数据集。
所以这种方法适用于小型数据集和大型数据集等两种情况。
根据您的选择,
- I can show the table using Jquery Tables(Data Table JS).
Datatable
是一个很好的选择,它带有更多其他功能,例如过滤、搜索、排序、信息等等。
根据您的数据集大小,您应该在客户端实现和服务器端实现之间做出选择。如果您的行数少于 4000,我建议您在客户端使用数据表。
但是,如果您的数据集非常大,请确保对数据表使用服务器端实现。
link 这里给出了如何为 datatable
我认为最好只加载您需要的数据。为什么要加载根本不可见的数据?
考虑是否让 GUI 框架在客户端处理分页:
- 您完全不必为它操心。过滤和排序也很可能在客户端处理。
- 初学者更容易实施。
- 如果您的应用程序只在 Intranet 上 运行,让客户端处理更大的数据集可能完全没问题(从性能的角度来看)。
考虑考虑是否自己处理分页:
- 您还必须实现排序和筛选!如果您在服务器上进行分页,则无法在客户端进行排序和过滤。这种实现可能会很麻烦。
- 它加载数据的速度要快得多,因为您不会收到任何无论如何都不会显示的数据。
因此,您应该高度重视的内容取决于您的数据、基础架构和受众。
在Pagination: Server Side or Client Side?
上提到了更多优点