我们目前正在使用数据库来维护用户的状态信息(在单独的表中)。每次用户访问应用程序(发送请求)时,我们都会从数据库中获取该信息,并在处理完请求后将其更新回数据库。
这在我们的许多项目中都非常有效,并且很容易实现,但这会增加调用数据库和保存状态信息的开销。
在这种情况下,还有其他方法可以更好地运作吗?
答案 0 :(得分:2)
开箱即用,MS提供StateServer mode。这使您可以将会话数据存储在由一个或多个Web服务器共享的单个服务器上的内存中。在某些情况下(如果您的会话状态SQL Server处于显着负载下),这可能会给您带来提升。
默认情况下,SQL Server会话提供程序会为每个项目提取并保存会话项目。如果您知道您的会话使用,这似乎效率低下(您为每个请求获取并保存多个项目),您可以在SQL Server上实现一个自定义SessionState Store Provider,它在请求开始时提取所有会话项并将它们全部保存在请求结束。
其他资源:
答案 1 :(得分:0)
有很多策略。我希望你的会话是粘性的(即它一直路由到同一台机器)。在这种情况下,您可以在本地缓存数据(在内存中)并仅使用DB进行备份(“只写”)。此外,还有像 memcached 这样的解决方案,提供分布式缓存。