DNN性能优化方案系列(1)概述

DNN4.5.5在性能方面应该做了不少工作,上面hostsetting页面的关于性能方面的设置在DNN3X(至少在我比较熟悉的4.3.5)中是没有的.

1.Page State Persistence,我不知道怎么翻译,但我知道他有什么作用.就是将页面的ViewState保存于页面,或内存.如果选page项,那就是asp.net默认的方法保存于页面中,如果选内存,它就保存于内存.我们会发现
<input type="hidden" name="__VIEWSTATE" id="
__VIEWSTATE" value="" />
也就是说页面的ViewState是空的.

2.模块缓存方法  (还没看过代码实现,待学习,以后补上)

3.运行设置
ModuleController.vb

        Public Function GetTabModules(ByVal TabId As IntegerAs Dictionary(Of Integer, ModuleInfo)
            
Dim key As String = String.Format(DataCache.TabModuleCacheKey, TabId)

            
'First Check the Tab Cache
            Dim modules As Dictionary(Of Integer, ModuleInfo) = TryCast(DataCache.GetPersistentCacheItem(key, GetType(Dictionary(Of Integer, ModuleInfo))), Dictionary(Of Integer, ModuleInfo))

            
If modules Is Nothing Then
                
'tabmodule caching settings
                Dim timeOut As Int32 = DataCache.TabModuleCacheTimeOut * Convert.ToInt32(Common.Globals.PerformanceSetting)

                
'Get modules form Database
                modules = FillModuleInfoDictionary(DataProvider.Instance().GetTabModules(TabId))

                
'Cache tabs
                If timeOut > 0 Then
                    DataCache.SetCache(key, modules, TimeSpan.FromMinutes(timeOut), 
True)
                
End If
            
End If
            
Return modules
        
End Function

TabController.vb

        Public Function GetTabsByPortal(ByVal PortalId As IntegerAs Dictionary(Of Integer, TabInfo)
            
Dim key As String = String.Format(DataCache.TabCacheKey, PortalId)

            
'First Check the Tab Cache
            Dim tabs As Dictionary(Of Integer, TabInfo) = TryCast(DataCache.GetPersistentCacheItem(key, GetType(Dictionary(Of Integer, TabInfo))), Dictionary(Of Integer, TabInfo))

            
If tabs Is Nothing Then
                
'tab caching settings
                Dim timeOut As Int32 = DataCache.TabCacheTimeOut * Convert.ToInt32(Common.Globals.PerformanceSetting)

                
'Get tabs form Database
                tabs = FillTabInfoDictionary(DataProvider.Instance().GetTabs(PortalId))

                
'Cache tabs
                If timeOut > 0 Then
                    DataCache.SetCache(key, tabs, TimeSpan.FromMinutes(timeOut), 
True)
                
End If
            
End If

            
Return tabs
        
End Function


4.授权缓存
   文件:DotNetNuke_04.05.05_Source\Website\Default.aspx.vb

            If Request.IsAuthenticated = True Then
                
' set client side page caching for authenticated users
                If Convert.ToString(PortalSettings.HostSettings("AuthenticatedCacheability")) <> "" Then
                    
Select Case Convert.ToString(PortalSettings.HostSettings("AuthenticatedCacheability"))
                        
Case "0" : Response.Cache.SetCacheability(HttpCacheability.NoCache)
                        
Case "1" : Response.Cache.SetCacheability(HttpCacheability.Private)
                        
Case "2" : Response.Cache.SetCacheability(HttpCacheability.Public)
                        
Case "3" : Response.Cache.SetCacheability(HttpCacheability.Server)
                        
Case "4" : Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache)
                        
Case "5" : Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate)
                    
End Select
                
Else
                    Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache)
                
End If
            
End If

上面这段源码,为什么这样设置,不明白,知道的兄弟,请指点下
附一asp.net性能优化的文章
http://book.chinaz.com/net/asp.net1/dot15.htm

5.Compression Setting:   即DNN内置的CompressionModule
      <<让你的dnn飞起来,超级加速>>http://www.cnreds.com/Default.aspx?tabid=60&ArticleID=185
    一文中说CompressionModule在DNN4.5中不能正常使用.实际DNN已经内置了这个功能.

6.Use Whitespace Filter:  不知道怎么用,一但勾上就出错.可能是服务文件编码设置那里不对而导致DNN不能正常运行.

上面具体都是怎么实现对系统的优化.我们在本系列以后章节,具体介绍.



ps:要冲排名2000了,大家帮忙顶下.
原文地址:https://www.cnblogs.com/shiningrise/p/850102.html