asp.net - IEnumerablevs DataTable 服务器端
问题描述
每次我将数据从控制器传递到视图时,我都会使用 IEnumerable。但是今天我在想如果表中有一千或几百万行会发生什么,......它会不会使处理器过载?或者它会使用所有的内存吗?
所以现在我在考虑是否使用 jquery DataTable 使用它的服务器端选项来通过分页而不是一次全部带来行。
如果我继续使用 IEnumerable,这是个好主意还是没有问题
解决方案
在一个 HTML 视图中呈现数百万行太多了。甚至数千也会很慢。涉及到几个部分:
- 从某种数据源(例如数据库)中获取数据
- 在服务器端处理数据(创建 html)
- 将视图发送到客户端(网络)
- 在浏览器中渲染 html
通常,渲染部分是第一个变慢的部分。尝试渲染 10.000 行可能会冻结用户浏览器,而服务器组件通常仍然可以正常工作(假设您一次没有太多用户)。
只要我们只讨论典型的桌面用户,通过网络发送数据就没有问题。如果您的目标是移动设备,这是一个问题。
在服务器上创建一个 html 视图通常非常快。如果您有很多用户,那么数据库将成为问题(因为它比 c# 部分更难扩展)。
简而言之:是的。如果要支持大型数据集,则必须确保
- 一次只渲染其中的一部分(通常称为 dom 虚拟化)
- 只有一部分被发送到浏览器(分页)
您可以应用其中一种或两种策略。
推荐阅读
- git - Git - 已经在命令行中的分支上,但分支在 Atom 的 git 插件中不可用
- php - 从 DB 和 PHP 刷新模态 AJAX 内容动态
- java - 不能在 OnClickListener 上抛出 IOException
- tensorflow - TensorFlow XOR 实现,无法达到 100% 的准确率
- reactjs - 如何在样式化组件中定义 className
- firebase - 将 firebase 导入到 react-native
- java - Java 从 URL NullPointerException 解析 JSON
- java - 基于其他两个对象的子类创建对象
- php - 更新用于在 PHP 中解析 XML 的 URL
- php - 在长脚本中死亡或退出是一种好习惯(PHP)