Перейти к основному содержимому

Производительность: Способы повышения

Общие техники

Начиная с 10000–20000 задач, в зависимости от используемых настроек конфигурации и плагинов, могут возникнуть задержки в отрисовке диаграммы Gantt на странице.

Ниже приведены способы решения этой проблемы:

  1. Отключить отрисовку отдельных ячеек и оставить только отрисовку строк (установить опцию show_task_cells в 'false')
  2. Установить фоновое изображение для области таймлайна вместо отрисовки фактических линий (установить опцию static_background в 'true') (функциональность PRO, для версий до v6.3, прочитайте детали ниже)
  3. Включить динамическую загрузку (установить опцию branch_loading в 'true')
  4. Увеличить шаг шкалы (установить свойство unit опции scales на "month" или "year")
  5. Уменьшить диапазон отображаемых дат (использовать опции start_date и end_date)
  6. Удалить индикаторы выполнения у задач (установить опцию show_progress в 'false')
  7. Повысить скорость отрисовки шкал (включить опцию smart_scales, если она отключена)
  8. Если вы используете календари рабочего времени [guides/working-time.md], обязательно настройте параметры рабочего времени до загрузки данных в Gantt. В противном случае продолжительности всех задач будут пересчитаны дважды — сначала при загрузке задач, затем при применении нового календаря. В любом случае всё должно работать корректно, но такие пересчеты могут увеличить время инициализации вашего приложения.
  9. Если вы задаёте конфигурацию duration_unit как "hour" или "minute", обязательно установите duration_step равным 1. Такое сочетание активирует определённые оптимизации для расчётов рабочего времени, которые работают только когда шаг установлен в 1. Обратите внимание, что между режимами "оптимизированный" и "неоптимизированный" существенно различается производительность.

Связанный пример: Оптимизации производительности

Умная отрисовка

Техника Умной отрисовки значительно ускоряет скорость отображения данных при работе с большими объёмами данных. В этом режиме отрисовываются только задачи и связи, видимые на экране в данный момент.

Начиная с v6.2, умная отрисовка включена по умолчанию, так как она входит в ядро файла dhtmlxgantt.js. Таким образом, вам не нужно подключать файл dhtmlxgantt_smart_rendering.js на страницу, чтобы умная отрисовка работала.

заметка

Если вы подключите файл dhtmlxgantt_smart_rendering.js, который относится к старой версии, он перекроет улучшения нового встроенного расширения smart_rendering.

Если вам нужно отключить режим умной отрисовки, вы можете задать соответствующий параметр конфигурации в значение false:

gantt.config.smart_rendering = false;

Связанный пример: Работа с 30000 задач

Процесс обычной умной отрисовки состоит в том, что определяется, попадает ли положение элемента Gantt в область, видимую на экране, и решается, отображать ли его или нет.

Однако умная отрисовка пользовательских слоёв по умолчанию поддерживает только вертикальную умную отрисовку. Это означает, что пользовательские слои будут отрисовываться, когда строка указанной задачи находится в области просмотра. Но точные координаты пользовательского элемента вычислить невозможно, и вся строка задачи на шкале принимается за его положение.

Вы можете обратиться к статье addTaskLayer, чтобы узнать, как включить горизонтальную умную отрисовку для пользовательских слоёв.

Работа с большим диапазоном дат

заметка

Эта функциональность доступна только в PRO версии

Если в вашем проекте используется большой диапазон дат и версия Gantt до v6.3, вы можете включить параметр static_background в дополнение к умной отрисовке, чтобы задать фоновое изображение для области таймлайна вместо отрисовки реальных линий.

gantt.config.static_background = true;

Для версий Gantt выше v6.3 эта конфигурационная опция полезна только если вы хотите уменьшить размер запросов к экспортному серверу при экспорте данных.

Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.