2016-11-28 71 views
0

不知何故,它似​​乎可能是一个坏主意,但想知道是否推荐使用控制器中的会话范围将会话数据存储在控制器字段中时,例如,作为一种用户数据缓存你不必一直打数据库来获取特定用户的频繁请求的信息?Grails 3 - 在scope ='session'的控制器中存储会话数据?

而且,顺便说一句,只是想知道在这种情况下服务器在控制器实例上保留多久。如果某人将浏览器选项卡打开一周而不使用它,那么该会话的控制器实例是否会无限期地消耗服务器上的资源?

回答

0

你可以使用这样的控制器,但为什么不只是简单地使用缓存呢?有很多非常好的缓存(例如Spring缓存),这可能会比这种方法更具可扩展性。

会话管理(以及它们何时到期)由您的应用程序容器(例如Tomcat,JBoss,Websphere等)处理。在大多数情况下,如果没有与服务器交互(例如点击URL或页面),它们会在默认20分钟后过期。因此,一旦会话过期,会话范围的控制器实例就成为清理和删除的候选对象。