【发布时间】:2011-11-03 15:35:55
【问题描述】:
我的 JSF/RichFaces/Facelets ajax 请求存在性能问题,据我所知,因为每个 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 富脸。 3.3.3.决赛 Facelets 1.1.15 接缝 2.1.2
我尝试添加一些上下文参数以查看它们是否有帮助,但它们什么也没做: facelets.BUILD_BEFORE_RESTORE = false facelets.REFRESH_PERIOD = -1 或 5(如 5 分钟)
有没有办法判断我们的视图是否被正确缓存?我们不关心状态保存方法,所以我相信它默认为服务器端。我们所有的请求都发生在接缝的长期对话中。我不确定这是否是一个因素,因为我认为视图会在会话级别缓存?任何帮助将不胜感激,谢谢。
更多调试后更新:
AjaxViewHandler(它有一个 FaceletsViewHandler 的成员变量)设置了 developmentMode=true。我不确定这是否会导致 facelets 不缓存任何视图,因此在开发周期中会刷新任何更改...??很难找到关于视图的 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 从 15(默认)增加到 1000,这没有效果。
我还尝试更改为客户端状态保存,但没有任何运气。没有想法了....希望有人可以提供帮助....
Seam 2.1 似乎自动初始化 RichFaces,我不确定这是否与它有关.....
【问题讨论】:
-
我知道这是一个老问题......但是有这么多领域,你可以考虑这样做:industrieit.com/blog/2011/11/…
标签: java jsf richfaces facelets