Как улучшить производительность в igGrid от Infragistics Ignite-UI?

Я начну с описания моей ситуации.

  1. Я использую нумерацию страниц. В самой сложной ситуации моя сетка имеет 100 строк и 120 столбцов.

  2. Я использую такие функции, как: сортировка, группировка, выбор строк, скрытие столбцов, перемещение столбцов, удаленный и локальный пейджинг, исправление столбцов (замораживание).

Я не имею влияния на эти требования - это требует бизнес, и я не могу его изменить. Проблема в том, что производительность не приемлема, мне нужно ее улучшить. На самом деле я не знаю, как мне этого добиться.

Производительность визуализированной сетки довольно хорошая, но время, необходимое для визуализации сетки, абсолютно не приемлемо.

В Chrome для рендеринга сетки требуется около 40 секунд. В Internet Explorer (который я должен поддерживать) рендеринг сетки длится около 2 минут. Это время для 100 строк и 120 столбцов с 4 фиксированными столбцами (я обнаружил, что исправление столбцов оказывает огромное влияние на производительность - без фиксирования рендеринга последние 19 секунд, с 4 фиксированными столбцами - 40 секунд в Chrome). Это время необходимо только для рендеринга сетки, когда конфигурация рассчитана - другими словами, это время от момента, когда я выполняю igGrid (config_object) с готовой функцией configuration_object, до момента рендеринга сетки.

Я читал о виртуализации сетки, но это немного помогает, потому что я не могу использовать виртуализацию столбцов с необходимыми функциями. Если честно, с этими ограничениями есть небольшая разница между сеткой и простой таблицей с виртуальными свитками. Добавление виртуализации строк немного помогает, но этого недостаточно, и из-за количества строк снижается производительность при использовании сетки - она ​​запаздывает при прокрутке.

Мои вопросы:

  • Как я могу улучшить эту производительность, возможно ли это вообще с помощью Igniete UI?

  • Сколько времени я могу достичь с помощью идеально оптимизированных конфигураций сетки со 100 строками, 120 столбцами и прикладными функциями, которые я перечислил?

  • Как уменьшить влияние исправления на производительность?

  • Также я обнаружил, что при виртуализации строк в DOM создается около 70 строк, если у меня есть 100 строк на странице. Может быть, есть способ уменьшить, чтобы ускорить рендеринг?

  • Может быть, есть способ на самом деле отобразить сетку, например, с 20 строками и 20 столбцами, сделать ее пригодной для использования, а остальные отобразить позже?

2 ответа

Решение

В последней версии IgniteUI for JavaScript - версия 18.2 с указанными настройками я не смог получить те же результаты при тестировании начальной загрузки. Вот jsFiddle с примененными настройками для вашей справки:

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

http://jsfiddle.net/ojpydtwm/

Начальное время рендеринга, которое я наблюдал, выглядит следующим образом:

  • На Chrome с изначально фиксированными столбцами - около 3,5 секунд
  • На Chrome без изначально фиксированных столбцов - около 2,5 секунд
  • В IE с изначально фиксированными столбцами - около 9,5 секунд
  • В IE без изначально фиксированных столбцов - около 6 секунд

Большая нагрузка на производительность вызвана отображением 120 столбцов. По умолчанию igGrid не виртуализируется горизонтально, и даже если вы включите виртуализацию, она не совместима с некоторыми функциями, которые вы должны включить в своем требовании. Тем не менее, времена, которые вы получаете для Chrome, не такие, какими они должны быть, и я бы посоветовал обратиться в службу поддержки Infragistics.

Между тем в справке есть эта статья, в которой даются рекомендации о том, как сделать производительность оптимальной с igGrid,

Другие вопросы по тегам