У меня проблема с производительностью с моими айсхасами JSF/RichFaces/Facelets и из того, что я могу сказать, потому что все дерево компонентов перестраивается при каждом запросе ajax. Это происходит, даже если я использую ajaxSingle = true, разделы обтекания в области a4j: объявить единый раздел для рендеринга или вообще ничего. Наша страница - динамическая страница со множеством вложенных уровней. Страница может содержать около 800-900 полей (inputText, богатые календари, selectOneMenus и т.д.). Начальное время загрузки - проблема, но я понимаю эту проблему, ее много полей. Как только у нас есть это начальное время сборки/рендеринга, хотя мы разработали все другие действия как ajax и только reRender, что нужно. Из журналов отладки facelets я вижу такие сообщения при любом вызове ajax:
2011-08-24 22:19:03,054 DEBUG [facelets.viewhandler] (http-0.0.0.0-8080-2) Took
24445ms to build view: /oconsole/appfile.xhtml
2011-08-24 22:19:09,377 DEBUG [facelets.viewhandler] (http-0.0.0.0-8080-2) Took
6323ms to render view: /oconsole/appfile.xhtml
Я не уверен, что что-то, что мы делаем, вызывает перестройку всего дерева компонентов, или личинки определяют эту потребность по какой-то причине (устаревший кеш?). Вот наш стек: JBoss 5.1 JSF 1.2 RichFaces. 3.3.3.Final Лицеи 1.1.15 Шов 2.1.2
Я попытался добавить некоторые параметры контекста, чтобы увидеть, помогут ли они, но они ничего не сделали: facelets.BUILD_BEFORE_RESTORE = false facelets.REFRESH_PERIOD = -1 или 5 (как в 5 минут)
Можно ли вообще сказать, правильно ли кэшируются наши представления? Мы не рассматриваем метод экономии состояния, поэтому я считаю, что он по умолчанию относится к стороне сервера. Все наши запросы происходят в длинных цепочках. Я не был уверен, что это играет роль, поскольку я думал, что взгляды кэшируются на уровне сеанса? Любая помощь будет принята с благодарностью, спасибо.
Обновление после дополнительной отладки:
AjaxViewHandler (который имеет переменную-член в FaceletsViewHandler) имеет параметр developmentMode = true. Я не уверен, что это приводит к тому, что facelets не кэширует какие-либо представления, поэтому любые изменения будут обновляться во время циклов разработки...?? Его было очень сложно найти любую информацию о кешетах/JSF-кешировании взглядов и о поведении и управлении этим. Кроме того, когда я добавляю конфигурационный параметр:
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>false</param-value>
</context-param>
Это не получилось! В отладчике я все еще вижу истинный набор. Поскольку у нас есть много подзаголовков, я также пробовал com.sun.faces.numberOfLogicalViews и com.sun.faces.numberOfViewsInSession до 1000 от 15 (по умолчанию), и это не повлияло.
Я также попытался сэкономить при сохранении состояния на стороне клиента. Запуск идей.... надеюсь, что кто-то может помочь....
Кажется, Seam 2.1 автоматически инициализирует RichFaces, и я не уверен, что с этим что-то связано.....