Как повысить производительность в igGrid с помощью Infragistics Ignite-UI?

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

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

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

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

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

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

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

Мои вопросы:

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

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

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

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

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


person SigGP    schedule 17.02.2019    source источник


Ответы (2)


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

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

http://jsfiddle.net/ojpydtwm/

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

  • В Chrome с изначально фиксированными столбцами — около 3,5 секунд.
  • В Chrome без изначально фиксированных столбцов — около 2,5 секунд.
  • В IE с изначально фиксированными столбцами — около 9,5 секунд.
  • В IE без изначально фиксированных колонок — около 6 секунд
person Maya Kirova    schedule 18.02.2019

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

Тем временем в справке есть эта статья, в которой даны рекомендации о том, как сделать оптимальная производительность с igGrid.

person Konstantin Dinev    schedule 18.02.2019