2013-02-21 86 views
3

用户初始与ASP.NET建立会话后,随后的每个HTTP请求会有多少StateServer会话对象是立即自动获取和反序列化?例如:ASP.NET“重建会话”性能命中

  1. ALL会话对象获取的接收请求和会话重新建立,或者......此刻
  2. 会话被重新建立后的对话对象获取并单独反序列化,因为每个请求HttpContext.Session [“...”]是否成立?

答案对我如何使用会话有巨大的影响。例如,如果我已将大量用户数据预取到会话中,并且每次HTTP请求时StateServer会话都会完全反序列化,那么我将遇到明显的性能下降。但是,如果预取的用户数据仅在请求特定会话密钥时才反序列化,那么对于我来说不用担心。

UPDATE 标记了这个问题的答案后,我发现ASP.NET with AppFabric Server 1.1 has an option to have session restored on-demand rather than all-at-once。这由web.config中的useBlobMode控制。

回答

1

Session加载页面首次加载时的所有用户信息Session。然后,在页面完成处理后,它将用户会话信息保留回商店。

您可以通过MSDN在custom state store implementations上获得更好的理解。

这是你应该尽可能少地使用Session的一个主要原因,因为处理代价昂贵(无论是在数据存储中传输数据还是在数据存储中保存数据的页面请求)。