zoukankan      html  css  js  c++  java
  • 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了,大家帮忙顶下.
  • 相关阅读:
    Enterprise Library Policy Injection Application Block 之三:PIAB的扩展—创建自定义CallHandler(提供Source Code下载)
    一首最好听的足球队歌,见证往日的辉煌
    WCF后续之旅(10): 通过WCF Extension实现以对象池的方式创建Service Instance
    WCF后续之旅(9): 通过WCF双向通信实现Session管理[下篇]
    WCF后续之旅(7):通过WCF Extension实现和Enterprise Library Unity Container的集成
    WCF后续之旅(8):通过WCF Extension 实现与MS Enterprise Library Policy Injection Application Block 的集成
    ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline Part II
    WCF后续之旅(9):通过WCF的双向通信实现Session管理[上篇]
    WCF后续之旅(1): WCF是如何通过Binding进行通信的
    Enterprise Library Policy Injection Application Block 之二: PIAB设计和实现原理
  • 原文地址:https://www.cnblogs.com/shiningrise/p/850102.html
Copyright © 2011-2022 走看看