ASP.NET“重建会话”性能命中

时间:2013-02-21 04:39:18

标签: asp.net performance session

用户最初与ASP.NET建立会话后,对于每个后续HTTP请求,有多少StateServer会话对象立即自动获取和反序列化?例如:

  1. 在收到请求和重新建立会话时,所有会话对象都会被提取,或者......
  2. 在重新建立会话后,会对HttpContext.Session [“...”]的每个请求单独提取和反序列化会话对象吗?
  3. 答案对我如何使用会话产生了巨大影响。例如,如果我已经将大量用户数据预先提取到会话中,并且StateServer会话在每个HTTP请求时完全反序列化,那么我将遇到明显的性能损失。但是,如果我在请求特定会话密钥时仅反序列化预取的用户数据,那么对我来说不用担心。

    更新 在标出这个问题的答案之后,我发现了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 个答案:

答案 0 :(得分:1)

首次加载页面时,

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

您可以通过custom state store implementations上的MSDN更好地了解。

这是你应该尽可能少地使用Session的一个主要原因,因为它处理起来很昂贵(无论是在数据存储中的传输还是在数据存储中的传输以及在数据存储器的生命周期内保存数据页面请求)。