ASP.NET SQLServer会话性能与本地变量

时间:2016-06-03 14:47:17

标签: asp.net vb.net session-variables session-state aspstate

我支持遗留应用程序,我看到这样的代码:

'Use Session for everything?
If Session("UserType") = "Admin" Then
    'do admin something
ElseIf Session("UserType") = "Manager" Then
    'do manager stuff
ElseIf Session("UserType") = "User" Then
    'do regular stuff
Else
    'do anonymous stuff
End If

声明一个局部变量,将会话变量分配给局部变量,然后使用局部变量进行测试会更快更好地提高性能吗?

'Use local variable?
Dim UT As String = Session("UserType")
If UT = "Admin" Then
    'do admin something
ElseIf UT = "Manager" Then
    'do manager stuff
ElseIf UT = "User" Then
    'do regular stuff
Else
    'do anonymous stuff
End If

或者,一旦为当前正在执行的代码检索会话变量值,IIS是否会自动缓存它?

1 个答案:

答案 0 :(得分:0)

HttpApplication.PostAcquireRequestState Event我们可以看到,在获得会话状态时会引发事件:

  

在获取与当前请求关联的请求状态(例如,会话状态)时发生。

ASP.NET Session State Overview州:

  

会话变量存储在通过HttpContext.Session属性公开的SessionStateItemCollection对象中。在ASP.NET页面中,当前会话变量通过Page对象的Session属性公开。

将这些组合在一起,我们可以推断出每次使用时都不会从请求中提取会话值,这似乎是您关心的问题。将其称为缓存可能会将缓存的想法推得太过分了。

不是IIS处理所有这些:它是ASP.NET。

关于您展示的代码,我个人希望看到用Select Case处理的代码,但这取决于您。