IEnumerable<ViewModel> 与 DataTable 服务器端
IEnumerable<ViewModel> vs DataTable serverside
每次我传递数据时,我都使用 IEnumerable 从控制器到视图。但是今天我在想,如果 table 中有一千或几百万行会发生什么……它会使处理器过载吗?或者它会使用所有的内存吗?
所以现在我在考虑是否使用 jquery DataTable 使用它的服务器端选项通过分页而不是一次全部带来行。
这是个好主意还是我继续使用 IEnumerable 就没有问题
在一个 HTML 视图中呈现数百万行太多了。即使是数千也会很慢。涉及到几个部分:
- 从某种数据源(例如数据库)获取数据
- 正在服务器端处理数据(创建html)
- 将视图发送到客户端(网络)
- 在浏览器中呈现 html
通常渲染部分是第一个变慢的部分。尝试呈现 10.000 行可能会冻结用户浏览器,而服务器组件通常仍然可以正常工作(假设您一次没有太多用户)。
通过网络发送数据没有问题,只要我们只讨论典型的桌面用户。如果您的目标是移动设备,这是一个问题。
在服务器上创建 html 视图通常非常快。如果你有很多用户,数据库就会成为问题(因为它比 c# 部分更难扩展)。
简而言之:是的。如果要支持大数据集,必须保证
- 一次只渲染一部分(通常称为dom虚拟化)
- 只有一部分发送到浏览器(分页)
您可以应用其中一种或两种策略。
每次我传递数据时,我都使用 IEnumerable 从控制器到视图。但是今天我在想,如果 table 中有一千或几百万行会发生什么……它会使处理器过载吗?或者它会使用所有的内存吗?
所以现在我在考虑是否使用 jquery DataTable 使用它的服务器端选项通过分页而不是一次全部带来行。
这是个好主意还是我继续使用 IEnumerable 就没有问题
在一个 HTML 视图中呈现数百万行太多了。即使是数千也会很慢。涉及到几个部分:
- 从某种数据源(例如数据库)获取数据
- 正在服务器端处理数据(创建html)
- 将视图发送到客户端(网络)
- 在浏览器中呈现 html
通常渲染部分是第一个变慢的部分。尝试呈现 10.000 行可能会冻结用户浏览器,而服务器组件通常仍然可以正常工作(假设您一次没有太多用户)。
通过网络发送数据没有问题,只要我们只讨论典型的桌面用户。如果您的目标是移动设备,这是一个问题。
在服务器上创建 html 视图通常非常快。如果你有很多用户,数据库就会成为问题(因为它比 c# 部分更难扩展)。
简而言之:是的。如果要支持大数据集,必须保证
- 一次只渲染一部分(通常称为dom虚拟化)
- 只有一部分发送到浏览器(分页)
您可以应用其中一种或两种策略。