在用户最初与 ASP.NET 建立会话后,对于每个后续 HTTP 请求,有多少 StateServer 会话对象会立即自动获取和反序列化?例如:
- 是否在收到请求并重新建立会话时获取所有会话对象,或者...
- 会话重新建立后,会话对象是否会在每次对 HttpContext.Session["..."] 的请求时单独获取和反序列化?
答案对我如何使用会话有巨大的影响。例如,如果我已将大量用户数据预取到会话中,并且 StateServer 会话在每个 HTTP 请求时完全反序列化,那么我将体验到明显的性能损失。但是,如果仅在我请求特定会话密钥时才对预取的用户数据进行反序列化,那么对我来说就不用担心了。
更新 在标记了这个问题的答案后,我发现带有 AppFabric Server 1.1 的 ASP.NET 可以选择按需恢复会话而不是 all-at-once。这由web.config 中的useBlobMode控制。