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

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

При работе с 10 000–20 000 задач, в зависимости от вашей конфигурации и используемых плагинов, вы можете заметить задержки при отрисовке 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. При использовании календарей рабочего времени убедитесь, что настройки рабочего времени заданы до загрузки данных в Gantt. В противном случае длительности задач будут пересчитаны дважды — при загрузке задач и при применении нового календаря. Это не приведёт к ошибкам, но может увеличить время инициализации приложения.
  9. Если вы устанавливаете конфигурацию duration_unit в "hour" или "minute", убедитесь, что duration_step установлен в 1. Такая комбинация активирует определённые оптимизации для вычислений рабочего времени, которые работают только при шаге 1. Имейте в виду, что есть существенная разница в производительности между "оптимизированным" и "неоптимизированным" режимами.

Related sample:  Performance tweaks

Умная отрисовка (Smart Rendering)

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

Начиная с версии v6.2, умная отрисовка включена по умолчанию в основном файле dhtmlxgantt.js, поэтому подключать файл dhtmlxgantt_smart_rendering.js больше не требуется.

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

Чтобы отключить умную отрисовку, установите параметр конфигурации в false:

gantt.config.smart_rendering = false;

Related sample:  Working with 30000 tasks

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

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

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

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

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

gantt.config.static_background = true;

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

К началу