Wicket、页堆栈和内存使用

Wicket、页堆栈和内存使用,wicket,Wicket,Wicket应用程序序列化和缓存所有页面,以支持有状态组件,以及支持后退按钮,以及其他可能的原因。我有一个应用程序,它使用setResponsePage从一个屏幕导航到另一个屏幕。在相当短的时间内,会话变得相当大,因为之前的所有页面都存储在会话中。在大多数情况下,出于明显的原因,我只需要会话包含当前页面,也许还需要最后2或3个页面,以便使用浏览器的“后退”按钮轻松导航 当我离开某个页面并且知道我不想使用“返回”按钮返回该页面版本后,我是否可以强制该页面过期?更一般地说,建议用什么方法来处理Wic

Wicket应用程序序列化和缓存所有页面,以支持有状态组件,以及支持后退按钮,以及其他可能的原因。我有一个应用程序,它使用setResponsePage从一个屏幕导航到另一个屏幕。在相当短的时间内,会话变得相当大,因为之前的所有页面都存储在会话中。在大多数情况下,出于明显的原因,我只需要会话包含当前页面,也许还需要最后2或3个页面,以便使用浏览器的“后退”按钮轻松导航

当我离开某个页面并且知道我不想使用“返回”按钮返回该页面版本后,我是否可以强制该页面过期?更一般地说,建议用什么方法来处理Wicket中的会话增长?

如果您在页面上使用了大量域对象,这些域对象最终与其他域对象紧密耦合,请确保避免对这些域对象进行序列化

看看 用于包装域对象的LoadableDetachableModel 用于显示域对象列表的DataView和IDataProvider

不应将域对象填充到组件的实例变量中。 你不应该为了在匿名子类中使用域对象引用而使其成为最终引用。 您不应仅将域对象列表传递给ListView


也许,在应用程序类中对WbeRequestCycle进行子类化时,您可以在pagemap中控制页面的生存期。。。虽然还没有尝试过,但为了避免由于会话中的序列化和内存使用堆积而导致字节流连续堆叠而导致会话阻塞,您可以使用可分离模型,通过使用挂钩在每个请求周期开始时安排自己的存储和恢复,通过这种方式,您可以完全控制包含会话中不需要的页面字节流的模型,或者通过“后退”按钮进行导航