0

我正在使用 JSF 2.0,Icefaces并且Glassfish对于我的项目,我想尽我所能优化这个应用程序,我想知道发送参数的最优化方法是什么。

第一个 1:在 bean 中 使用/BackOffice/test.xhtml?id=7 in url and String a=(String) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("id");@RequestScoped

<f:metadata>
        <f:viewParam name="id"  value="#{id}">
        </f:viewParam>
    </f:metadata>

在jsf中

或第二个:使用 backing bean@SessionScoped

4

3 回答 3

1

优化到底如何?SessionScoped bean 将持有持久内存,如果您有大量用户,这可能会很糟糕。RequestScope 将要求每个请求都传递 id,这两种方式都不会过于昂贵,但确实需要为每个请求创建一个请求范围的 bean。

我通常更喜欢请求参数而不是会话参数,除非该值确实需要在用户在网站上的时间内持续存在。

于 2011-04-07T13:54:01.630 回答
1

没有“尽我所能优化”这样的事情。优化就是权衡取舍。你用 CPU 换内存,用内存换带宽,用带宽换 CPU 等等。

传递 ID 的方法可能是您的问题中最不重要的。把它忘了吧。如果你想优化,首先问问自己你是在客户端还是在服务器上保持视图状态。这将产生巨大的影响(不,这里没有“最佳”选择,这是一种权衡)。接下来的事情将是 - 如何处理数据库。您是按请求加载数据还是将它们保存在您的视图或会话中?如果使用JPA,是否启用二级缓存?这些是你应该问的问题。没有关于请求参数的详细信息。

于 2011-04-07T20:58:02.360 回答
0

如果你想优化你应该从分析开始,我非常怀疑这两者之间的区别是否有任何意义。

请求参数应作为请求参数传递,否则会破坏书签、浏览器历史记录、搜索引擎索引和缓存。

于 2011-04-07T14:23:26.997 回答