在会话状态下存储数据的不同方式

时间:2008-12-23 19:35:49

标签: asp.net session-state

我被要求为ASP .NET / MVC C#3.5网络应用程序提出状态管理策略

我选择在状态服务器上存储会话 - 这将是一个单独的物理盒。我担心在存储到会话时序列化/反序列化对象所需的时间......

有没有人知道在执行此操作时获得最佳性能的技术?

在将信息存储到会话帮助之前也会压缩信息,或者这也会导致性能降低。

编辑:我正在使用一个单独的状态服务器盒,因为我们将有多个Web服务器。

6 个答案:

答案 0 :(得分:2)

就个人而言,这里最常见的要素是减少投入会议的信息量。

压缩可能会节省空间,但是需要更多的CPU时间来完成它,这很可能导致性能降低或最低无净增益。除非你在谈论真正的大对象。

答案 1 :(得分:1)

会话,应用程序和缓存上的Zip压缩的

Example,就在StackOverflow上使用。

答案 2 :(得分:0)

确保在不使用它的页面上禁用会话状态。 “默认情况下,ASP.NET会话状态管理器在每个请求中对会话数据存储执行两次访问 - 一次读取访问和一次写入访问,无论请求的页面是否使用会话状态。” --MSDN Magazine

答案 3 :(得分:0)

小心你不要试图过早地优化你的解决方案。在实现Session压缩之类的操作之前,最好先进行一系列基准测试,以确定在您的应用程序中是否需要这样的东西。

答案 4 :(得分:0)

您确定要在会话存储中存储那么多数据吗?单个用户的会话的典型使用是几百个字节!

对于序列化和反序列化,这种小尺寸是可以忽略的。

当然,你会期待更多的用户,但仍然。

如果您在会话中存储大量数据,那么IMO,您做错了。

答案 5 :(得分:0)

有几个人指出,每个用户的会话状态中的数据太多是一个问题的标志,但他们没有直接指出它的解决方案:保留用户SQL数据库并将所有用户信息存储在。然后,会话状态通常仅包含登录用户的ID。任何其他状态可能与用户的当前活动直接相关,这表明它可能更适合作为内存cookie或查询字符串变量。通常,这是更好的选择,因此当用户单击其后退和前进按钮时,事情就会陷入腐败状态。