【发布时间】:2014-03-28 10:16:54
【问题描述】:
我正在开发一个 JSF 2 应用程序(primefaces 3.4.1 和 Mojarra 2.1.10)。 视图很大,因此应用程序响应速度不是很快,但仍然可以接受。 当用户在表单中显示新数据时,这不是问题。但是当他只是编辑数据时,就更烦人了。
在离开某些字段时,我们执行了一些简单的逻辑(使用 ajax):
<p:ajax
event="blur"
process="@this"
listener="#{myBean.myMethod()}"
partialSubmit="true"
update="another_component_id" />
不出所料,当我用chrome开发者工具查看请求/响应的内容时,可以看到只发送了文本字段,只收到了“更新”中引用的组件。
我希望它会很快,但是 RESTORE_VIEW 和 RENDER_RESPONSE 阶段各需要大约 3-4 秒。
如果我删除 partialSubmit 并设置 update="@form",则会交换更多数据,但这两个阶段仍然需要相同的时间。
查看此链接时: http://www.industrieit.com/blog/2011/11/stateless-jsf-high-performance-zero-per-request-memory-overhead/ 我读过: “页面性能在很大程度上与视图树的大小有关,无论它的大部分是否由于位于未渲染的分支中而被排除在渲染之外。”。这似乎证实了我的观察,但我没有找到太多关于此的信息。
我说的对吗?即使只提交/更新部分页面,RESTORE_VIEW 和 RENDER_RESPONSE 仍然很长,这是否正常?
提前致谢。
【问题讨论】:
-
大有多大?您的 JSF 代码的大小是多少,使用了多大的包含?您在视图范围的 bean 中存储了多少数据?视图范围的 bean 是否序列化(服务器/客户端)?
-
STATE_SAVING_METHOD 是服务器。 Facelets 可能包含,我无法评估 jsf 代码大小。 Facelets 是通用的,带有依赖于支持 bean 的循环。 html 是 150 ko。它主要是 primefaces 数据表和文本字段。该视图包含 250 个 UIComponent 对象。没有视图范围的 bean,大多数是会话范围的。我不知道会话大小。我认为它不会被序列化,即使在服务器上也是如此。有些对象是不可序列化的,所以我认为如果服务器曾经尝试序列化会话,我会得到错误。同时用户很少(可能 5 个)。
标签: jsf-2 primefaces