[学习笔记] ASP.NET应用程序性能优化

 

ASP.NET应用程序性能优化

    . 页面和服务器处理
        1. 
避免与服务器端的往返行程
            eg
a. 一次读取大量数据,在客户端处理之后再同意向数据库提交;
                    b. ajax
,前端页面不刷新,单独线程与服务器交互,减少服务器往返可以提高性能。
        2.
IsPostback避免往返过程中的额外操作
            
页面事件过程:Page_PreInit -> Page_Init -> Page_Load -> Control events -> Page_PreRender -> Page_Unload
            
任何 page 加载都要走一个完整的页面过程,使用 IsPostback 可以过滤一些步骤。
        3.
谨慎使用服务器端控件
            
服务器控件封装一些事件,更占开销。可以考虑使用 Html 控件。
        4. 
视图状态 ViewState
            
关闭整个页面的试图状态 <%@ EnableViewState="false"%>,也可以关闭指定控件试图状态。
   
. 状态处理
        1.
禁用绘画状态
            a.
在会话未被使用时,禁用会话
                <%@ Page EnableSessionState="false"%>
            b. 
使用只读绘画
                <%@ Page EnableSessionState="ReadOnly"%>
            c.
禁用 Web Service 的胡话状态
                [WebMethod(false)]
                [WevMethod(EnableSession=false)]
            d. 
禁用应用程序绘画
               
web.config <sessionState Mode="Off">
        2. 
慎重选择会话状态提供程序
            a.
进程内绘画状态
                asp.net
默认模式,速度最快。
               
仅在会话状态中使用少量容易丢失的数据,不会对应用程序产生较大影响。

web.config <sessionState Mode="InProc">
            b. Windows
服务 进程外会话状态
                
web.config <sessionState Mode="StateServer" stateConnectionstring=”tcpip=localhost:端口号”>
            c. SQL Server
数据库中的进程外会话状态

web.config <sessionState Mode="SQLServer" allowCustomerDatabase=”false” stateConnectionstring=”database=数据库名/sql2005;uid=sa”>

在控制台:aspnet_reg.exe –s 数据库名\sql2005 –u –ssad –sstype p

   
. 数据访问

    1. 将存储过程用于数据访问
    2. 使用SqlDataReader 获得快进只读数据游标
    3. 尽可能缓存数据和页面输出

    不需要动态计算输出的页面,考虑使用页面缓存
    注意:a. 不要使用太多缓存(占用服务器内存)
                b. 缓存时间不能太短
 
  . Web引用程序
          1. 大型应用程序,先执行预编译
          2. 必要的时候,调整每个应用程序进程的线程数
          3. 禁用调试模式
          4. 优化应用程序配置文件
                     a. 是否需要身份验证
                     b. 字符集(整站使用 ascii,配置成 utf-8,少许提高性能)
                     c. 清除HttpModual中不用的模块
    . 编码优化
              1. 不要依赖代码中的异常捕获,用判断处理
              2. 大量字符串链接,使用StringBuilder
              3. 不要使用过多内存
              4. 尽量避免使用Finalize方法的对象,重写Dispose方法

posted on 2006-08-27 22:15  老刘.  阅读(320)  评论(0编辑  收藏  举报

导航