我支持遗留应用程序,我看到这样的代码:
'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是否会自动缓存它?
答案 0 :(得分:0)
从HttpApplication.PostAcquireRequestState Event我们可以看到,在获得会话状态时会引发事件:
在获取与当前请求关联的请求状态(例如,会话状态)时发生。
ASP.NET Session State Overview州:
会话变量存储在通过HttpContext.Session属性公开的SessionStateItemCollection对象中。在ASP.NET页面中,当前会话变量通过Page对象的Session属性公开。
将这些组合在一起,我们可以推断出每次使用时都不会从请求中提取会话值,这似乎是您关心的问题。将其称为缓存可能会将缓存的想法推得太过分了。
不是IIS处理所有这些:它是ASP.NET。
关于您展示的代码,我个人希望看到用Select Case
处理的代码,但这取决于您。