У меня проблема с производительностью моих запросов ajax JSF / RichFaces / Facelets и из того, что я могу сказать, потому что все дерево компонентов перестраивается при каждом запросе ajax.Это происходит, даже если я использую ajaxSingle = true, оборачиваю разделы в a4j: region, объявляю один раздел для повторного рендеринга или ни одного вообще.Наша страница - это динамическая страница с множеством вложенных уровней.Страница может содержать около 800-900 полей (inputText, расширенные календари, selectOneMenus и т. Д.).Время начальной загрузки является проблемой, но я понимаю эту проблему, это много полей.Как только у нас будет время первоначальной сборки / рендеринга, мы разработали все остальные действия, чтобы быть ajax и только повторно делать то, что нужно.В журналах отладки 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
Я не уверен, что что-то, что мы делаем, вызывает перестройку всего дерева компонентов, или Facelets определяет эту потребностьпо какой-то причине (устаревший кеш?).Вот наш стек: JBoss 5.1 JSF 1.2 RichFaces.3.3.3.Final Facelets 1.1.15 Seam 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, и я не уверен, что это как-то связано с этим .....