我正在为我的项目使用JSF 2.0和Icefaces
以及Glassfish
,我希望尽我所能优化此应用程序,并且我想知道什么是最优化的发送参数的方法。
前1:
使用/BackOffice/test.xhtml?id=7 in url
和String a=(String) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("id");
在bean中@RequestScoped
和
<f:metadata>
<f:viewParam name="id" value="#{id}">
</f:viewParam>
</f:metadata>
在jsf
中或
第二 :
使用带有@SessionScoped
答案 0 :(得分:1)
如何精确优化? SessionScoped bean将保留持久性内存,如果您拥有大量用户,这可能会很糟糕。 RequestScope将要求每个请求传递id,这在任何方面都不会过于昂贵,但需要按请求创建请求范围的bean。
除非值真正需要在用户在网站上停留的时间内持续存在,否则我一般倾向于使用params而非会话参数。
答案 1 :(得分:1)
没有“尽我所能地优化”这样的事情。优化是为了进行权衡。你交换CPU用于内存,内存用于带宽,带宽用于cpu等等。
传递Id的方法可能是您问题中最不重要的。把它忘了吧。如果要优化,首先要问问自己是否在客户端或服务器上保持视图状态。这将产生巨大的差异(不,这里没有“最佳”选择,这是一种权衡)。接下来将是 - 如何处理数据库。您是按照请求加载数据还是将它们与视图或会话保持一致?如果您使用JPA,是否启用了二级缓存?这些是你应该问的问题。关于请求参数的详细信息。
答案 2 :(得分:0)
如果你想优化你应该从剖析开始,我高度怀疑这两者之间的差异是否有意义。
请求参数应作为请求参数传递,否则会破坏书签,浏览器历史记录,搜索引擎索引和缓存。