如何通过 Infragistics Ignite-UI 提高 igGrid 的性能?

How improve performance in igGrid from Infragistics Ignite-UI?

我将从描述我的情况开始。

  1. 我使用分页。在最困难的情况下,我的网格有 100 行和 120 列。

  2. 我使用以下功能:排序、分组、行选择、列隐藏、列移动、远程和本地分页、列固定(冻结)。

我对此要求没有影响 - 业务需要它,我无法更改它。问题是性能不可接受table 我必须改进它。其实我也不知道怎么实现。

渲染网格的性能很好,但渲染网格所需的时间绝对不能接受table。

在chrome中,渲染网格需要大约 40 秒。在 Internet Explorer(我必须支持)中渲染网格持续大约 2 分钟。这些时间是针对 100 行和 120 列以及 4 个固定列(我发现固定列对性能有巨大影响 - 没有修复最后 19 秒的渲染,4 个固定列在 chrome 中持续 40 秒)。这些时间只需要在计算配置时渲染网格 - 换句话说,这是从我执行 igGrid(config_object) 并准备好 configuration_object 函数到渲染网格的时间。

我已经阅读了有关网格虚拟化的内容,但它有一点帮助,因为我无法使用具有所需功能的列虚拟化。老实说,由于这些限制,网格和带有虚拟卷轴的简单 table 之间存在一些差异。附加行虚拟化有一点帮助,但这还不够,并且由于行数的原因,使用网格时性能会下降 - 滚动时会滞后。

我的问题是:

较大的性能开销是由呈现的 120 列引起的。默认情况下 igGrid 没有水平虚拟化,即使您打开虚拟化,它也与您必须在您的要求中启用的某些功能不兼容。您为 Chrome 获得的时间仍然不是它们应该的时间,我的建议是在 Infragistics 支持中解决这个问题。

同时,帮助中有 this article,它提供了有关如何使用 igGrid 优化性能的指导。

使用最新版本的 IgniteUI for JavaScript – 版本 18.2,使用指定的设置,我在测试初始加载性能时无法获得相同的结果。这是一个带有应用设置的jsFiddle供您参考:

$("#grid").igGrid({...});

http://jsfiddle.net/ojpydtwm/

我观察到的初始渲染时间如下:

  • 在 Chrome 上,最初固定列 – 大约 3.5 秒
  • 在 Chrome 上没有最初固定的列 – 大约 2.5 秒
  • 在最初固定列的 IE 上 - 大约 9.5 秒
  • 在没有初始固定列的 IE 上 – 大约 6 秒