在url?p = 2和Managed bean中使用参数之间的性能最佳实践

时间:2011-04-07 13:44:35

标签: jsf jsf-2 viewparams managed-property

我正在为我的项目使用JSF 2.0和Icefaces以及Glassfish,我希望尽我所能优化此应用程序,并且我想知道什么是最优化的发送参数的方法。

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

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

在jsf

或 第二 : 使用带有@SessionScoped

的支持bean

3 个答案:

答案 0 :(得分:1)

如何精确优化? SessionScoped bean将保留持久性内存,如果您拥有大量用户,这可能会很糟糕。 RequestScope将要求每个请求传递id,这在任何方面都不会过于昂贵,但需要按请求创建请求范围的bean。

除非值真正需要在用户在网站上停留的时间内持续存在,否则我一般倾向于使用params而非会话参数。

答案 1 :(得分:1)

没有“尽我所能地优化”这样的事情。优化是为了进行权衡。你交换CPU用于内存,内存用于带宽,带宽用于cpu等等。

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

答案 2 :(得分:0)

如果你想优化你应该从剖析开始,我高度怀疑这两者之间的差异是否有意义。

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