Производительность интерфейса: повторить в JSF2 / Моджара - PullRequest
1 голос
/ 12 июля 2010

Анализируя производительность страницы JSF2 (Mojara), возвращающей 200 табличных строк, я вижу, что 50% времени, затрачиваемого на ответ, приходится на простой рендеринг. В течение 4 секунд в блоке разработчика, 2 относятся только к визуализации этой страницы.

Как лучше всего повысить производительность?

(Мне сказали заменить пользовательский интерфейс: повторить с кодом JSTL?)

Из-за сложности дерева объектов JSF профилировщик мало что мне говорит.

Ответы [ 2 ]

1 голос
/ 28 февраля 2014

Я знаю, что это старый запрос, но вот решение, которое я нашел эффективным в прошлом.Все зависит от того, что вы визуализируете.

Для рендеринга простых списков строк необходимо быстрее создать функцию lib тега

public static String collectionToString(Collection collection, String separator)
{
  if (CisNullOrEmpty(collection))
  {
    return "";
  }
    // custom join implementation
return Utils.join(collection, separator);
}

Для более сложных вы можете использовать пользовательские функции, зависящие от объектов

1 голос
/ 12 июля 2010

Рендеринг - самая дорогая задача в любом случае.Но 2 секунды - это довольно много (кстати, эти 2 секунды перед рендерингом звучат как плохая производительность БД).Разве вы не используете условные выражения внутри компонента UIData?Например, h:inputText disabled="#{bean.disabled}" и т. Д.

Трудно сказать, какой путь улучшить производительность, и трудно это улучшить на стороне JSF.Разве вы не знаете о скорости сети и / или веб-браузера в полной картине?Плохая пропускная способность сети и небольшой буфер отклика на стороне сервера могут блокировать и то, и другое.Низкая производительность рендеринга таблиц в веб-браузере может блокировать одно и другое.MSIE, как известно, является катастрофой в производительности рендеринга таблиц.Вместо этого попробуйте FireFox или Chrome.

В любом случае, замена ui:repeat на c:forEach не очень поможет.Более того, c:forEach немного менее эффективен, поскольку он вызывает items на каждую итерацию вместо кэширования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...