Как я могу улучшить производительность элемента управления RichFaces Scrollabledatable?

StackOverflow https://stackoverflow.com/questions/86171

  •  01-07-2019
  •  | 
  •  

Вопрос

Во-первых, небольшая предыстория:

Я отображаю набор данных с 288 строками и 8 столбцами (2304 записи), используя Scrollabledatable, и производительность оставляет желать лучшего.Выполнение AJAX-запроса, который повторно отправляет элемент управления, занимает почти 20 секунд по сравнению с 7 секундами при рендеринге тех же данных с использованием элемента управления DataTable.

Показатели, полученные с помощью фильтров сервлетов и JavaScript, показывают, что практически все время обработки тратится на стороне клиента.Из 19,87 секундного запроса на сервере тратится 3,87 секунды...на запрос и сортировку данных было потрачено менее 0,6 секунды.

Переключение на элемент управления DataTable сокращает цикл запроса, ответа и рендеринга до 1/3 от того, что я вижу с помощью ScrollableDataTable, но также удаляет несколько важных функций.

А теперь вопрос:

У кого-нибудь еще возникали проблемы с производительностью при использовании ScrollableDataTable?Какой наиболее эффективный способ визуализации больших объемов табличных данных в JSF / RichFaces с закрепленными столбцами и двухосевой прокруткой?

Обновить:

В итоге мы написали пользовательский элемент управления.Полный контроль над визуализируемыми компонентами и сгенерированным JavaScript позволил нам добиться времени отклика, сравнимого с данными DataTable.Однако я согласен с Заком - разбивка на страницы - это правильный ответ.

Это было полезно?

Решение

Узкое место, скорее всего, находится на этапе "Render Response" жизненного цикла JSF.Он пытается отобразить слишком много компонентов для представления одновременно.

Мое предложение состоит в том, чтобы использовать разбивку на страницы.Это должно значительно повысить вашу производительность, поскольку одновременно рендерит меньшие части представления.

Будьте уверены, что ваш rich:dataTable обладает rows набор свойств, а также - если вы выполняете какую-либо фильтрацию столбцов - убедитесь, что таблица дат также имеет это свойство reRender="paginator" где находится ваш пагинатор rich:datascroller.

Другие советы

Давным-давно у меня были похожие проблемы, и в итоге я написал апплет для отображения данных, которые взаимодействовали со страницей с помощью livescript.Мои проблемы с производительностью были такими же, как и то, что вы видели.Клиенту потребовалось более 30 секунд, чтобы отобразить данные таблицы, а сервер обработал мой ответ менее чем за 2 секунды.

Это звучит как ошибка в javascript, созданном для рендеринга таблицы.Вы пробовали использовать эту страницу в разных браузерах?Какую реализацию JSF вы используете (RI, MyFaces или что-то еще)?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top