Tengo un problema de rendimiento con mis solicitudes JSF/RichFaces/Facelets ajax y por lo que puedo decir es porque el árbol de componentes completo se está reconstruyendo en cada solicitud de AJAX. Esto está sucediendo incluso si uso ajaxSingle = true, ajuste secciones en a4j: región, declaro una sola sección para rerendering o ninguna en absoluto. Nuestra página es una página dinámica con muchos niveles anidados. La página puede contener alrededor de 800-900 campos (inputText, calendarios enriquecidos, selectOneMenus, etc.). El tiempo de carga inicial es un problema, pero entiendo ese problema, son muchos campos. Una vez que tengamos ese tiempo de construcción/renderización inicial, hemos diseñado todas las demás acciones para que sean ajax y solo reenviar lo que se necesita. A partir de los registros de depuración facelets veo mensajes como este en cualquier llamada ajax:Vista JSF obteniendo reconstrucción en cada solicitud de 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
No estoy seguro de si hay algo que estamos haciendo está causando la reconstrucción de todo el árbol de componentes o facelets es determinar esta necesidad requerida por alguna razón (caché obsoleto?). Aquí está nuestra pila: JBoss 5.1 JSF 1.2 RichFaces. 3.3.3.Final Facelets 1.1.15 Seam 2.1.2
que han intentado añadir algunos parámetros de contexto para ver si ayudarían, pero no hicieron nada: facelets.BUILD_BEFORE_RESTORE = false facelets.REFRESH_PERIOD = - 1 o 5 (como en 5 min)
¿Hay alguna forma de saber si nuestras vistas se almacenan en la memoria caché correctamente? No descuidamos un método de ahorro de estado, por lo que creo que está predeterminado en el lado del servidor. Todas nuestras solicitudes suceden dentro de las conversaciones de larga duración. No estaba seguro de si esto juega un papel, ya que pensé que las vistas se almacenan en caché en el nivel de la sesión. Cualquier ayuda será enormemente apreciada, gracias.
actualización después de más de depuración:
El AjaxViewHandler (que tiene una variable miembro de la FaceletsViewHandler) tiene developmentMode = true conjunto. No estoy seguro de si esto está causando facelets para no almacenar en caché las vistas por lo que los cambios se actualizarán durante los ciclos de desarrollo ...? Ha sido muy difícil encontrar información sobre el almacenamiento en caché de facelets/JSF y el comportamiento y control de eso. Además, cuando agrego config param:
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>false</param-value>
</context-param>
Esto no tomó! En el depurador todavía veo verdadero conjunto. Como tenemos muchas subvistas, también probé com.sun.faces.numberOfLogicalViews y com.sun.faces.numberOfViewsInSession hasta 1000 desde 15 (valor predeterminado) y esto no tuvo ningún efecto.
También traté de cambiar al ahorro de estado del lado del cliente sin suerte. Quedando sin ideas .... espero que alguien pueda ayudar ....
Parece Seam 2.1 de auto-inicializa RichFaces y no estoy seguro de si eso tiene algo que ver con eso .....
Sé que esta es una vieja pregunta ... pero con tantos campos, puede considerar hacer esto: http://industrieit.com/blog/2011/11/stateless-jsf-high-performance-zero-per -request-memory-overhead/ –