【发布时间】:2016-11-28 03:43:18
【问题描述】:
不知何故,这似乎是一个坏主意,但想知道当您在控制器中使用会话范围将会话数据存储在控制器字段中时是否推荐它,例如,作为用户数据的一种缓存所以你不必一直点击数据库来获取特定用户经常请求的信息?
顺便说一句,只是想知道在这种情况下服务器会保留控制器实例多长时间。如果有人让浏览器选项卡打开一周而不使用它,该会话的控制器实例是否会无限期地挂起,消耗服务器上的资源?
【问题讨论】:
不知何故,这似乎是一个坏主意,但想知道当您在控制器中使用会话范围将会话数据存储在控制器字段中时是否推荐它,例如,作为用户数据的一种缓存所以你不必一直点击数据库来获取特定用户经常请求的信息?
顺便说一句,只是想知道在这种情况下服务器会保留控制器实例多长时间。如果有人让浏览器选项卡打开一周而不使用它,该会话的控制器实例是否会无限期地挂起,消耗服务器上的资源?
【问题讨论】:
您可以使用这样的控制器,但为什么不直接使用缓存呢?那里有很多非常好的缓存(例如 Spring 缓存),它们可能比这种方法更具可扩展性。
会话管理(以及它们何时到期)由您的应用程序容器(例如 Tomcat、JBoss、Websphere 等)处理。在大多数情况下,如果没有与服务器交互(例如点击 URL 或页面),它们会在默认 20 分钟后过期。因此,一旦会话过期,会话范围内的控制器实例就会成为清理和删除的候选对象。
【讨论】: