1

JSF2.0 是一个了不起的 Web 框架;虽然 Rails/DJango/Play 基本上都使用带变量替换的模板(基本上是 JSP),但 JSF2.0 更倾向于成为基于组件的框架,如 Tapestry、GWT 和 Wicket。

然而,JSF 会随着页面的复杂性而线性降低性能。因此,在这里阅读了一篇引人入胜的文章后:http: //industrieit.com/blog/2011/11/stateless-jsf-high-performance-zero-per-request-memory-overhead我有几个问题。

首先,作者说 JSF 生命周期中的大部分时间都花在buildView(). 一个特定的应用程序,特别是在 Mojarra 中运行的应用程序,如何对其进行分析?

其次,自由使用是否f:ajax execute=""有助于buildView()提高绩效?该属性是否execute减少了必须完成的工作量buildView()

最后,在全页导航上,是否有类似的f:ajax说法可以说“在恢复当前视图时只执行以下组件”?这是荒谬的吗?

谢谢!

4

1 回答 1

0
  1. 所以事实证明,在 Mojarra 中描述这一点有点困难。但是,MyFaces 非常简单……只需将您的分析器指向 LifeCycleImpl。

  2. 在 MyFaces 上,正确设置执行结果会带来巨大的性能提升。在我的机器上,buildView()样板文件大约需要 8 毫秒。对于在f:ajax execute=. 我h:outputText在一个ui:repeatui:fragment id="fragment". 当我添加fragmentf:ajax execute=响应时间时,我从 8 毫秒响应时间变为 45 毫秒响应时间。这里的教训是仅设置f:ajax execute=为仅执行您的输入组件并且f:ajax render=仅执行您的h:message组件。

  3. OmniFaces 缓存组件本质上就是这样做的,但范围更广一些。

我仍然希望有人能提出更科学的答案:)

于 2012-07-13T20:14:46.780 回答