DNN性能优化方案系列(2)Page State Persistence

我在<< DNN性能优化方案系列(1)概述 >>说明DNN对性能优化做的努力,Page State Persistence的保存方法是其中一个措施之一.
下面来看下DNN4.5.5的实现.
先看 DotNetNuke_04.05.05_Source\Library\Components\Framework\PageBase.vb
#Region  "Protected Properties"

        
' '' -----------------------------------------------------------------------------
         ' '' <summary>
         ' '' PageStatePersister returns an instance of the class that will be used to persist the Page State
         ' '' </summary>
         ' '' <returns>A System.Web.UI.PageStatePersister</returns>
         ' '' <history>
         ' ''     [cnurse]        11/30/2005    Created
         ' '' </history>
         ' '' -----------------------------------------------------------------------------
         Protected   Overrides   ReadOnly   Property  PageStatePersister()  As  System.Web.UI.PageStatePersister
            
Get
                
' Set ViewState Persister to default (as defined in Base Class)
                 Dim  _persister  As  PageStatePersister  =   MyBase .PageStatePersister
                
If   Not  DotNetNuke.Common.Globals.HostSettings( " PageStatePersister " Is   Nothing   Then
                    
Select   Case   DirectCast (DotNetNuke.Common.Globals.HostSettings( " PageStatePersister " ),  String )
                        
Case   " M "
                            _persister 
=   New  CachePageStatePersister( Me )
                        
Case   " D "
                            _persister 
=   New  DiskPageStatePersister( Me )
                    
End   Select
                
End   If
                
Return  _persister
            
End   Get
        
End Property
#End Region

其中

Select   Case   DirectCast (DotNetNuke.Common.Globals.HostSettings( " PageStatePersister " ),  String )
         
Case   " M "     ' 选择将页面状态持久化保存于内存,M即memery首字母
                   _persister  =   New  CachePageStatePersister( Me )
         
Case   " D "    ' 选择将页面状态持久化保存于硬盘,D即Disk首字母,不过在主机设置里面似乎没有这个选项
                   _persister  =   New  DiskPageStatePersister( Me )
           
End   Select
CachePageStatePersister.vb
DNN性能优化方案系列(2)Page State Persistence Imports  System.Text
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence
Namespace DotNetNuke.Framework
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence    
''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
    ''' Namespace:  DotNetNuke.Framework
DNN性能优化方案系列(2)Page State Persistence
    ''' Project:    DotNetNuke
DNN性能优化方案系列(2)Page State Persistence
    ''' Class:      CachePageStatePersister
DNN性能优化方案系列(2)Page State Persistence
    ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
    ''' <summary>
DNN性能优化方案系列(2)Page State Persistence
    ''' CachePageStatePersister provides a cache based page state peristence mechanism
DNN性能优化方案系列(2)Page State Persistence
    ''' </summary>
DNN性能优化方案系列(2)Page State Persistence
    ''' <history>
DNN性能优化方案系列(2)Page State Persistence
    '''        [cnurse]    11/30/2006    documented
DNN性能优化方案系列(2)Page State Persistence
    ''' </history>
DNN性能优化方案系列(2)Page State Persistence
    ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
    Public Class CachePageStatePersister
DNN性能优化方案系列(2)Page State Persistence        
Inherits PageStatePersister
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence        
''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        ''' <summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' Creates the CachePageStatePersister
DNN性能优化方案系列(2)Page State Persistence
        ''' </summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' <history>
DNN性能优化方案系列(2)Page State Persistence
        '''     [cnurse]        11/30/2006    Documented
DNN性能优化方案系列(2)Page State Persistence
        ''' </history>
DNN性能优化方案系列(2)Page State Persistence
        ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        Public Sub New(ByVal page As Page)
DNN性能优化方案系列(2)Page State Persistence            
MyBase.New(page)
DNN性能优化方案系列(2)Page State Persistence        
End Sub

DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence        
''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        ''' <summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' Loads the Page State from the Cache
DNN性能优化方案系列(2)Page State Persistence
        ''' </summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' <history>
DNN性能优化方案系列(2)Page State Persistence
        '''     [cnurse]        11/30/2006    Documented
DNN性能优化方案系列(2)Page State Persistence
        ''' </history>
DNN性能优化方案系列(2)Page State Persistence
        ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        Public Overrides Sub Load()
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
' Get the cache key from the web form data
DNN性能优化方案系列(2)Page State Persistence
            Dim key As String = TryCast(Page.Request.Params("__VIEWSTATE_CACHEKEY"), String)
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
'Abort if cache key is not available or valid
DNN性能优化方案系列(2)Page State Persistence
            If String.IsNullOrEmpty(key) Or Not key.StartsWith("VS_"Then
DNN性能优化方案系列(2)Page State Persistence                
Throw New ApplicationException("Missing vaild __VIEWSTATE_CACHEKEY")
DNN性能优化方案系列(2)Page State Persistence            
End If
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
Dim state As Pair = TryCast(DataCache.GetPersistentCacheItem(key, GetType(Pair)), Pair)
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
If Not state Is Nothing Then
DNN性能优化方案系列(2)Page State Persistence                
'Set view state and control state
DNN性能优化方案系列(2)Page State Persistence
                ViewState = state.First
DNN性能优化方案系列(2)Page State Persistence                ControlState 
= state.Second
DNN性能优化方案系列(2)Page State Persistence            
End If
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence        
End Sub

DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence        
''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        ''' <summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' Saves the Page State to the Cache
DNN性能优化方案系列(2)Page State Persistence
        ''' </summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' <history>
DNN性能优化方案系列(2)Page State Persistence
        '''     [cnurse]        11/30/2006    Documented
DNN性能优化方案系列(2)Page State Persistence
        ''' </history>
DNN性能优化方案系列(2)Page State Persistence
        ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        Public Overrides Sub Save()
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
'No processing needed if no states available
DNN性能优化方案系列(2)Page State Persistence
            If ViewState Is Nothing And ControlState Is Nothing Then
DNN性能优化方案系列(2)Page State Persistence                
Exit Sub
DNN性能优化方案系列(2)Page State Persistence            
End If
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
Dim key As New StringBuilder()
DNN性能优化方案系列(2)Page State Persistence            
Dim _PortalSettings As PortalSettings = PortalController.GetCurrentPortalSettings()
DNN性能优化方案系列(2)Page State Persistence            
Dim TabId As Integer = _PortalSettings.ActiveTab.TabID
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
'Generate a unique cache key
DNN性能优化方案系列(2)Page State Persistence
            With key
DNN性能优化方案系列(2)Page State Persistence                .Append(
"VS_")
DNN性能优化方案系列(2)Page State Persistence                .Append(
IIf(Page.Session Is Nothing, Guid.NewGuid().ToString(), Page.Session.SessionID))
DNN性能优化方案系列(2)Page State Persistence                .Append(
"_")
DNN性能优化方案系列(2)Page State Persistence                .Append(TabId)
DNN性能优化方案系列(2)Page State Persistence            
End With
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
'Save view state and control state separately
DNN性能优化方案系列(2)Page State Persistence
            Dim state As New Pair(ViewState, ControlState)
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
'Add view state and control state to cache
DNN性能优化方案系列(2)Page State Persistence
            DataCache.SetCache(key.ToString(), state, Nothing, DateTime.Now.AddMinutes(15), System.Web.Caching.Cache.NoSlidingExpiration, True)
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
'Register hidden field to store cache key in
DNN性能优化方案系列(2)Page State Persistence
            Page.ClientScript.RegisterHiddenField("__VIEWSTATE_CACHEKEY", key.ToString())
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence        
End Sub

DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence    
End Class

DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence
End Namespace


继承PageStatePersister必须重载Load与Save
DNN将ViewState保存在内存,它将用于保存的Key保存的页面,用于从内存存取ViewState
Page.ClientScript.RegisterHiddenField("__VIEWSTATE_CACHEKEY", key.ToString())
生成一个隐藏域
<input type="hidden" name="__VIEWSTATE_CACHEKEY" id="__VIEWSTATE_CACHEKEY" value="VS_yjp0hlrgns3sqirbw0hsci45_36" />
此Key生成方法如下
With key
                .Append("VS_")
                .Append(IIf(Page.Session Is Nothing, Guid.NewGuid().ToString(), Page.Session.SessionID))
                .Append("_")
                .Append(TabId)
            End With

并设置Cache过期时间为15分钟
DataCache.SetCache(key.ToString(), state, Nothing, DateTime.Now.AddMinutes(15), System.Web.Caching.Cache.NoSlidingExpiration, True)
如果15分钟后页面才回传就会
Throw New ApplicationException("Missing vaild __VIEWSTATE_CACHEKEY")
就是这个页面的所有ViewState已经全部丢失.
这个Bug怎么处理,DNN不知有没有触觉的办法.我还没发现,或者目前根本还没解觉.
有好办法的同仁请提示下.

DiskPageStatePersister.vb

DNN性能优化方案系列(2)Page State Persistence Imports  System.IO
DNN性能优化方案系列(2)Page State Persistence
Imports  System.Text
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence
Namespace DotNetNuke.Framework
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence    
''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
    ''' Namespace:  DotNetNuke.Framework
DNN性能优化方案系列(2)Page State Persistence
    ''' Project:    DotNetNuke
DNN性能优化方案系列(2)Page State Persistence
    ''' Class:      DiskPageStatePersister
DNN性能优化方案系列(2)Page State Persistence
    ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
    ''' <summary>
DNN性能优化方案系列(2)Page State Persistence
    ''' DiskPageStatePersister provides a disk (stream) based page state peristence mechanism
DNN性能优化方案系列(2)Page State Persistence
    ''' </summary>
DNN性能优化方案系列(2)Page State Persistence
    ''' <history>
DNN性能优化方案系列(2)Page State Persistence
    '''        [cnurse]    11/30/2006    documented
DNN性能优化方案系列(2)Page State Persistence
    ''' </history>
DNN性能优化方案系列(2)Page State Persistence
    ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
    Public Class DiskPageStatePersister
DNN性能优化方案系列(2)Page State Persistence        
Inherits PageStatePersister
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence        
''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        ''' <summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' Creates the DiskPageStatePersister
DNN性能优化方案系列(2)Page State Persistence
        ''' </summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' <history>
DNN性能优化方案系列(2)Page State Persistence
        '''     [cnurse]        11/30/2006    Documented
DNN性能优化方案系列(2)Page State Persistence
        ''' </history>
DNN性能优化方案系列(2)Page State Persistence
        ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        Public Sub New(ByVal page As Page)
DNN性能优化方案系列(2)Page State Persistence            
MyBase.New(page)
DNN性能优化方案系列(2)Page State Persistence        
End Sub

DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence        
''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        ''' <summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' The CacheDirectory property is used to return the location of the "Cache"
DNN性能优化方案系列(2)Page State Persistence
        ''' Directory for the Portal
DNN性能优化方案系列(2)Page State Persistence
        ''' </summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' <remarks>
DNN性能优化方案系列(2)Page State Persistence
        ''' </remarks>
DNN性能优化方案系列(2)Page State Persistence
        ''' <history>
DNN性能优化方案系列(2)Page State Persistence
        '''   [cnurse] 11/30/2006  Created
DNN性能优化方案系列(2)Page State Persistence
        ''' </history>
DNN性能优化方案系列(2)Page State Persistence
        ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        Public ReadOnly Property CacheDirectory() As String
DNN性能优化方案系列(2)Page State Persistence            
Get
DNN性能优化方案系列(2)Page State Persistence                
Return PortalController.GetCurrentPortalSettings.HomeDirectoryMapPath & "Cache"
DNN性能优化方案系列(2)Page State Persistence            
End Get
DNN性能优化方案系列(2)Page State Persistence        
End Property

DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence        
''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        ''' <summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' The StateFileName property is used to store the FileName for the State
DNN性能优化方案系列(2)Page State Persistence
        ''' </summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' <remarks>
DNN性能优化方案系列(2)Page State Persistence
        ''' </remarks>
DNN性能优化方案系列(2)Page State Persistence
        ''' <history>
DNN性能优化方案系列(2)Page State Persistence
        '''   [cnurse] 11/30/2006  Created
DNN性能优化方案系列(2)Page State Persistence
        ''' </history>
DNN性能优化方案系列(2)Page State Persistence
        ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        Public ReadOnly Property StateFileName() As String
DNN性能优化方案系列(2)Page State Persistence            
Get
DNN性能优化方案系列(2)Page State Persistence                
Dim key As New StringBuilder()
DNN性能优化方案系列(2)Page State Persistence                
With key
DNN性能优化方案系列(2)Page State Persistence                    .Append(
"VIEWSTATE_")
DNN性能优化方案系列(2)Page State Persistence                    .Append(Page.Session.SessionID)
DNN性能优化方案系列(2)Page State Persistence                    .Append(
"_")
DNN性能优化方案系列(2)Page State Persistence                    .Append(Page.Request.RawUrl)
DNN性能优化方案系列(2)Page State Persistence                
End With
DNN性能优化方案系列(2)Page State Persistence                
Return CacheDirectory & "\" & CleanFileName(key.ToString) & ".txt"
DNN性能优化方案系列(2)Page State Persistence            
End Get
DNN性能优化方案系列(2)Page State Persistence        
End Property

DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence        
''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        ''' <summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' Loads the Page State from the Cache
DNN性能优化方案系列(2)Page State Persistence
        ''' </summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' <history>
DNN性能优化方案系列(2)Page State Persistence
        '''     [cnurse]        11/30/2006    Documented
DNN性能优化方案系列(2)Page State Persistence
        ''' </history>
DNN性能优化方案系列(2)Page State Persistence
        ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        Public Overrides Sub Load()
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
Dim reader As StreamReader = Nothing
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
' Read the state string, using the StateFormatter.
DNN性能优化方案系列(2)Page State Persistence
            Try
DNN性能优化方案系列(2)Page State Persistence                reader 
= New StreamReader(StateFileName)
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence                
Dim serializedStatePair As String = reader.ReadToEnd
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence                
Dim formatter As IStateFormatter = Me.StateFormatter
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence                
' Deserialize returns the Pair object that is serialized in
DNN性能优化方案系列(2)Page State Persistence
                ' the Save method.      
DNN性能优化方案系列(2)Page State Persistence
                Dim statePair As Pair = CType(formatter.Deserialize(serializedStatePair), Pair)
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence                ViewState 
= statePair.First
DNN性能优化方案系列(2)Page State Persistence                ControlState 
= statePair.Second
DNN性能优化方案系列(2)Page State Persistence            
Finally
DNN性能优化方案系列(2)Page State Persistence                
If Not reader Is Nothing Then
DNN性能优化方案系列(2)Page State Persistence                    reader.Close()
DNN性能优化方案系列(2)Page State Persistence                
End If
DNN性能优化方案系列(2)Page State Persistence            
End Try
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence        
End Sub

DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence        
''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        ''' <summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' Saves the Page State to the Cache
DNN性能优化方案系列(2)Page State Persistence
        ''' </summary>
DNN性能优化方案系列(2)Page State Persistence
        ''' <history>
DNN性能优化方案系列(2)Page State Persistence
        '''     [cnurse]        11/30/2006    Documented
DNN性能优化方案系列(2)Page State Persistence
        ''' </history>
DNN性能优化方案系列(2)Page State Persistence
        ''' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
        Public Overrides Sub Save()
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
'No processing needed if no states available
DNN性能优化方案系列(2)Page State Persistence
            If ViewState Is Nothing And ControlState Is Nothing Then
DNN性能优化方案系列(2)Page State Persistence                
Exit Sub
DNN性能优化方案系列(2)Page State Persistence            
End If
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence            
If Not (Page.Session Is NothingThen
DNN性能优化方案系列(2)Page State Persistence                
If Not Directory.Exists(CacheDirectory) Then
DNN性能优化方案系列(2)Page State Persistence                    Directory.CreateDirectory(CacheDirectory)
DNN性能优化方案系列(2)Page State Persistence                
End If
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence                
' Write a state string, using the StateFormatter.
DNN性能优化方案系列(2)Page State Persistence
                Dim writer As New StreamWriter(StateFileName, False)
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence                
Dim formatter As IStateFormatter = Me.StateFormatter
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence                
Dim statePair As New Pair(ViewState, ControlState)
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence                
Dim serializedState As String = formatter.Serialize(statePair)
DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence                writer.Write(serializedState)
DNN性能优化方案系列(2)Page State Persistence                writer.Close()
DNN性能优化方案系列(2)Page State Persistence            
End If
DNN性能优化方案系列(2)Page State Persistence        
End Sub

DNN性能优化方案系列(2)Page State Persistence    
End Class

DNN性能优化方案系列(2)Page State Persistence
DNN性能优化方案系列(2)Page State Persistence
End Namespace

在源码中看到的保存于盘硬的,没有过期这回事,但总不能让那些没用的文件一直留着,要有个删除的办法.但DNN中似乎还没处理这个.
还有这个Key问题,

DNN性能优化方案系列(2)Page State Persistence          ' '' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
         ' '' <summary>
DNN性能优化方案系列(2)Page State Persistence
         ' '' The StateFileName property is used to store the FileName for the State
DNN性能优化方案系列(2)Page State Persistence
         ' '' </summary>
DNN性能优化方案系列(2)Page State Persistence
         ' '' <remarks>
DNN性能优化方案系列(2)Page State Persistence
         ' '' </remarks>
DNN性能优化方案系列(2)Page State Persistence
         ' '' <history>
DNN性能优化方案系列(2)Page State Persistence
         ' ''   [cnurse] 11/30/2006  Created
DNN性能优化方案系列(2)Page State Persistence
         ' '' </history>
DNN性能优化方案系列(2)Page State Persistence
         ' '' -----------------------------------------------------------------------------
DNN性能优化方案系列(2)Page State Persistence
         Public   ReadOnly   Property StateFileName() As String
DNN性能优化方案系列(2)Page State Persistence            
Get
DNN性能优化方案系列(2)Page State Persistence                
Dim key As New StringBuilder()
DNN性能优化方案系列(2)Page State Persistence                
With key
DNN性能优化方案系列(2)Page State Persistence                    .Append(
"VIEWSTATE_")
DNN性能优化方案系列(2)Page State Persistence                    .Append(Page.Session.SessionID)
DNN性能优化方案系列(2)Page State Persistence                    .Append(
"_")
DNN性能优化方案系列(2)Page State Persistence                    .Append(Page.Request.RawUrl)
DNN性能优化方案系列(2)Page State Persistence                
End With
DNN性能优化方案系列(2)Page State Persistence                
Return CacheDirectory & "\" & CleanFileName(key.ToString) & ".txt"
DNN性能优化方案系列(2)Page State Persistence            
End Get
DNN性能优化方案系列(2)Page State Persistence        
End Property
与比CachePageStatePersister.vb不周到的地方是他似乎没考虑Page禁用Session的情况.

你可能感兴趣的:(性能优化)