繁体   English   中英

JSF是否在两个请求之间缓存每个组件的状态?

[英]Does JSF cache the state of each component in between the two requests?

在JSF中,每个组件的状态存储在请求之间 ”-这意味着数据在应用程序服务器上被缓存(!?),因此服务器现在将具有更大的内存需求(!?)。

但是我想我们也可以使状态为requestScoped ,所以这不会在两个请求期间将数据缓存在应用程序服务器上,对吗? 我得到正确吗?

[我的应用程序包含用户的博客帖子,这些博客帖子是较大的文本Blob,因此缓存起来非常昂贵。 但是,是的,有些数据需要缓存! ]

您在此处提到的句子是关于JSF状态保存的,它保存了组件树的状态。 默认情况下,这是在服务器上完成的...但是您也可以在客户端上执行此操作,以节省一些内存。 请参见: http : //wiki.glassfish.java.net/Wiki.jsp?page=JavaServerFacesRI#section-JavaServerFacesRI-WhatAreTheDifferencesBetweenServerAndClientSideStateSavingAndWhatAreTheBenefitsBenefitsDrawbacksOfEach

支持bean的范围是另外一回事。 您可以使后台bean的会话/请求/视图具有作用域(甚至使用另一个或自定义作用域)。 这将对服务器内存使用量产生影响。 但是,如果您正确地执行了操作,并且没有大数据需求,则可以进行管理。 例如,您可以存储尽可能少的数据并定期重新加载数据(从db,...)。

所有这一切并不意味着您的数据已缓存(至少不是来自持久性存储的数据)。 这取决于你。

因此,内存需求是需要注意的事情。 完善的Java EE服务器的基本设置通常比apache服务器上的php应用程序要多。但是,如果正确完成操作,使其变得更快/更好/更具可扩展性(cpu / mem)可能更容易实现。

去年,我不得不创建两个JSF应用程序。 如果我没记错的话,可以将数据缓存在Backing Bean中,这样您就不必每次刷新都可以访问数据库来检索博客内容。

JSF几乎具有非常强大的服务器-客户端功能。 很难想象JSF只能像GWT这样的客户端上运行。

您在使用IceFaces还是任何其他JSF实现(例如RichFaces)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM