首页 > 解决方案 > IEnumerablevs DataTable 服务器端

问题描述

每次我将数据从控制器传递到视图时,我都会使用 IEnumerable。但是今天我在想如果表中有一千或几百万行会发生什么,......它会不会使处理器过载?或者它会使用所有的内存吗?

所以现在我在考虑是否使用 jquery DataTable 使用它的服务器端选项来通过分页而不是一次全部带来行。

如果我继续使用 IEnumerable,这是个好主意还是没有问题

标签: asp.netasp.net-coredatatablesasp.net-mvc-viewmodel

解决方案


在一个 HTML 视图中呈现数百万行太多了。甚至数千也会很慢。涉及到几个部分:

  • 从某种数据源(例如数据库)中获取数据
  • 在服务器端处理数据(创建 html)
  • 将视图发送到客户端(网络)
  • 在浏览器中渲染 html

通常,渲染部分是第一个变慢的部分。尝试渲染 10.000 行可能会冻结用户浏览器,而服务器组件通常仍然可以正常工作(假设您一次没有太多用户)。

只要我们只讨论典型的桌面用户,通过网络发送数据就没有问题。如果您的目标是移动设备,这是一个问题。

在服务器上创建一个 html 视图通常非常快。如果您有很多用户,那么数据库将成为问题(因为它比 c# 部分更难扩展)。

简而言之:是的。如果要支持大型数据集,则必须确保

  • 一次只渲染其中的一部分(通常称为 dom 虚拟化)
  • 只有一部分被发送到浏览器(分页)

您可以应用其中一种或两种策略。


推荐阅读