我很难与GAE / J和VAADIN进行会谈。面对两个问题:
会话在请求之间的数据存储中持久存在,每个会话的硬限制为1MB。我们的启动会话是700K,您可以想象我们很快就能达到这个限制。
这肯定会成为性能问题。数据存储区/内存缓存区会话写入会导致某些时间显着延迟,从而降低用户体验。作为一种解决方法,我定制了Vaadin GAE servlet,并强制仅执行异步数据存储区写入。这解决了性能问题,但妥协了应用程序状态。因此,我有时会在同步屏幕上检测到陈旧状态。
有类似问题的人吗?或者给出解决方案提示?
===============================================
Wicket有类似的问题,找到了很好的解决方法:
http://blog.small-improvements.com/2012/02/19/reducing-wicket-session-size-to-one-third/
答案 0 :(得分:1)
Vaadin将整个UI存储在会话中是对的。但是,通常不会过多考虑它只是一组对用户可见的组件(Java类)。通常较大的会话大小是因为很多数据被绑定到用户界面组件。
很容易做到这一点,因为UI组件中指向数据对象的字段使它们成为会话的一部分,除非您正确处理它,否则它会迅速变大。
要解决此问题,您可能需要稍微重构代码以使会话大小更小。一般来说,这意味着
没有一个方法可以做到这一点,但这里有一些起点:
还有其他方法,但有了这些方法,您应该开始使用会话大小优化。