我被要求为ASP .NET / MVC C#3.5网络应用程序提出状态管理策略
我选择在状态服务器上存储会话 - 这将是一个单独的物理盒。我担心在存储到会话时序列化/反序列化对象所需的时间......
有没有人知道在执行此操作时获得最佳性能的技术?
在将信息存储到会话帮助之前也会压缩信息,或者这也会导致性能降低。
编辑:我正在使用一个单独的状态服务器盒,因为我们将有多个Web服务器。
答案 0 :(得分:2)
就个人而言,这里最常见的要素是减少投入会议的信息量。
压缩可能会节省空间,但是需要更多的CPU时间来完成它,这很可能导致性能降低或最低无净增益。除非你在谈论真正的大对象。
答案 1 :(得分:1)
Example,就在StackOverflow上使用。
答案 2 :(得分:0)
确保在不使用它的页面上禁用会话状态。 “默认情况下,ASP.NET会话状态管理器在每个请求中对会话数据存储执行两次访问 - 一次读取访问和一次写入访问,无论请求的页面是否使用会话状态。” --MSDN Magazine
答案 3 :(得分:0)
小心你不要试图过早地优化你的解决方案。在实现Session压缩之类的操作之前,最好先进行一系列基准测试,以确定在您的应用程序中是否需要这样的东西。
答案 4 :(得分:0)
您确定要在会话存储中存储那么多数据吗?单个用户的会话的典型使用是几百个字节!
对于序列化和反序列化,这种小尺寸是可以忽略的。
当然,你会期待更多的用户,但仍然。
如果您在会话中存储大量数据,那么IMO,您做错了。
答案 5 :(得分:0)
有几个人指出,每个用户的会话状态中的数据太多是一个问题的标志,但他们没有直接指出它的解决方案:保留用户SQL数据库并将所有用户信息存储在。然后,会话状态通常仅包含登录用户的ID。任何其他状态可能与用户的当前活动直接相关,这表明它可能更适合作为内存cookie或查询字符串变量。通常,这是更好的选择,因此当用户单击其后退和前进按钮时,事情就会陷入腐败状态。