Как улучшить производительность в igGrid от Infragistics Ignite-UI?
Я начну с описания моей ситуации.
Я использую нумерацию страниц. В самой сложной ситуации моя сетка имеет 100 строк и 120 столбцов.
Я использую такие функции, как: сортировка, группировка, выбор строк, скрытие столбцов, перемещение столбцов, удаленный и локальный пейджинг, исправление столбцов (замораживание).
Я не имею влияния на эти требования - это требует бизнес, и я не могу его изменить. Проблема в том, что производительность не приемлема, мне нужно ее улучшить. На самом деле я не знаю, как мне этого добиться.
Производительность визуализированной сетки довольно хорошая, но время, необходимое для визуализации сетки, абсолютно не приемлемо.
В 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({...});
Начальное время рендеринга, которое я наблюдал, выглядит следующим образом:
- На Chrome с изначально фиксированными столбцами - около 3,5 секунд
- На Chrome без изначально фиксированных столбцов - около 2,5 секунд
- В IE с изначально фиксированными столбцами - около 9,5 секунд
- В IE без изначально фиксированных столбцов - около 6 секунд
Большая нагрузка на производительность вызвана отображением 120 столбцов. По умолчанию igGrid
не виртуализируется горизонтально, и даже если вы включите виртуализацию, она не совместима с некоторыми функциями, которые вы должны включить в своем требовании. Тем не менее, времена, которые вы получаете для Chrome, не такие, какими они должны быть, и я бы посоветовал обратиться в службу поддержки Infragistics.
Между тем в справке есть эта статья, в которой даются рекомендации о том, как сделать производительность оптимальной с igGrid
,