【整理】asp.net2.0网站性能优化解决方案

    关于asp.net应用程序性能优化,似乎是一个讨论不完的问题,网上关于这方面的解决方案也比较多,我只简单的提一下,在这里我主要说一下session的三种不同的解决方案。

    针对asp.net应用程序性能优化的一般性解决方案大致有以下方式:

    (1)避免页面与服务器过多的往返过程,这就要求合理的使用IsPostBack以及服务器控件。

    (2)避免过多的服务器控件ViewState,可分别针对控件级、页面级和应用程序级来关闭和开启。

    (3)在未使用会话时关闭会话状态

         a 并不是所有的页面和应用程序都要使用会话状态,你可以在不使用会话状态的页面将其关闭

         b 如果页面只访问会话,但不打算修改它们,可以将其设置为只读

    (4)数据访问

         a 使用存储过程用于数据访问

         b 使用SqlDataReader获得快进的只读数据流

     (5)有选择性的缓存那些不易变化数据和页输出

         a 不要缓存的太多

         b 缓存的时间不要太短

     (6)大型Web应用程序,可以先预编译它

     (7)在网站发布时禁用调试模式

     (8)尽可能避免使用try catch语句来作为判断逻辑

     (9)大量字符串连接请使用StringBuilder,不要使用+

     以上方式主要是我采取的优化方式,所以先写出来,肯定不全,网上有很多,又需要的可以自行去谷歌或百度搜索,在这里我就不在赘述了。好了言归正传,接下来就到了本篇文章核心部分了,且听我慢慢道来。

     asp.net为我们提供了三种(我所知道的)保存会话的方式,具体如下:

     第一种,保存在内存中,也叫做进程内会话状态,这也是速度最快的解决方案,主要用于存放少量易失数据。这种也是我们最常用的一种方式,默认就是使用的这种方式。在Web.config中的配置 <sessionState mode="InProc"/>。

     第二种,window服务的进程外会话状态,首先要开通操作系统的"Asp.Net状态服务",开通方法如下:"开始">>"所有程序">>"管理工具">>"服务">>"Asp.Net状态服务">>"启用",此服务默认端口为42424。在Web.config中的配置:<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"/>,示例代码如下:

     web.config中

< sessionState mode = " StateServer "  stateConnectionString = " tcpip=localhost:42424 " ></ sessionState >

      前端代码

     public   partial   class  SessionStateTest : System.Web.UI.Page
    {
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            
if  ( ! IsPostBack)
            {
                
this .Session.Add( " name " " zhangsan " );
                
this .Session.Add( " sex " " nan " );
            }
        }

        
protected   void  Button1_Click( object  sender, EventArgs e)
        {
            Response.Write(
string .Format( " 姓名:{0},性别:{1} " ,Session[ " name " ].ToString(),Session[ " sex " ].ToString()));
        }
    }

 

     第三种,SQL数据库的进程外会话状态,这主要用于跨多个处理器或多个计算机缩放应用程序Web花园和Web农场以及当服务器进程重新启动时不能丢失数据的情况。此方式首先要在数据库创建一个名为ASPState的数据库,创建方式如下:

     在Visual Studio命令提示符下输入aspnet_regsql.exe -S [servername] -U [username] -P [password] -ssadd -sstype p

     在Web.config中的配置

<sessionState mode="SQLServer" allowCustomSqlDatabase="false"  sqlConnectionString="data source=[servername];uid=[username];pwd=[password]"/>,

     其中红色字体表示是否允许使用自定义数据库来保存会话,这里为false表示不允许。示例代码如下

     web.config中

< sessionState mode = " SQLServer "  allowCustomSqlDatabase = " false "  sqlConnectionString = " data source=jewleo\sql2005;uid=sa;pwd=sa; " ></ sessionState >

     前端调用

     public   partial   class  SessionStateTest : System.Web.UI.Page
    {
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            
if  ( ! IsPostBack)
            {
                
this .Session.Add( " name " " zhangsan " );
                
this .Session.Add( " sex " " nan " );
            }
        }

        
protected   void  Button1_Click( object  sender, EventArgs e)
        {
            Response.Write(
string .Format( " 姓名:{0},性别:{1} " ,Session[ " name " ].ToString(),Session[ " sex " ].ToString()));
        }
    }

数据库表中数据

2009061717254487.jpg

     以上内容有不全面之处,其中的Custom模式的会话状态,我不经常用,如果想了解下,可查阅MSDN获得帮助。

转载于:https://www.cnblogs.com/jewleo/archive/2009/06/17/06171423_1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值