asp学习网: 首页 >> asp.net >> ASP.NET性能优化相关文档

ASP.NET性能优化相关文档

Basic

1、慎用Page_Load和Page.IsPostBack , 避免不必要的执行操作 ;
2、关闭不必要的Session状态,<%@ Page EnableSessionState="false" %>
3、不必要时可以不使用Server Control;
4、不必要时可以关闭ViewState
<asp:GridView ID="GridView1" runat="server" EnableViewState ="false" ></asp:GridView>
<%@ Page EnableViewState="false" %>
5、在try catch时慎用 Exception (Exception 会增加性能消耗);
6、尽量不使用动态数据类型;
7、复杂的数据操作尽量使用存储过程;
8、只读数据访问不要使用DataSet,而用DataRead;
9、关闭DataRead与Connection;
10、关闭ASP.NET的Debug模式
11、使用缓存:页面输出缓存、数据缓存等。


页面性能优化

  1、会话状态的恰当选择

  HTTP协议是一种无状态的通信协议,无法记录和识别来自不同客户端的请求,但在实际应用中系统却要维护来自客户端的不同请求之间的会话状态信息。ASP.NET通过将会话状态信息存储在进程、状态服务器或SQL Server数据库中来解决这个问题。

  将会话状态信息保存在WEB服务器的内存中具有最佳的性能,速度很快,但是却缺乏会话状态信息跨越多个服务器的能力。若要在多个WEB服务器之间维护会话信息,可以使用状态服务器进行存储,这种方式由于可以将应用程序部署到多台服务器上而提高了系统的伸缩性和可靠性,但是以降低性能为代价。对于极其重要的会话信息,需要使用SQL Server存储方式,从而避免丢失重要的会话信息,但由此产生的工作负载比前两者大得多。

  若不考虑状态信息的保留和多个服务器共享,应尽量选择保存在服务器的进程中,从而得到最佳的性能。

  会话状态信息的存储方式选择通过web.config文件:
<sessionState
mode="InProc/StateServer/SqlServer" //存储方式由此行选择
stateConnectionString="tcpip=127.0.0.1:42424"
……
timeout="20"/>



2、服务器控件的优化选择

  2.1 减少不必要的服务器控件

  服务器控件带来的方便和功能是html控件所不能比拟的。但是每一个服务器控件都需要在服务器端创建相应的对象,是以牺牲服务器端的资源为代价的,过多的使用服务器控件会极大的影响程序性能。

  很多情况下,简单地使用html标记或数据绑定即能够实现所需功能。比如<asp:Label>控件,若使用它来显示静态信息,则完全可用简单的标记来实现。如果html控件达不到所要实现的功能,而且在脚本语言如javascript、vbscript也不能实现的情况下,才考虑选择服务器控件。

  2.2 禁用不必要的状态视图

  服务器控件的状态视图属性能够自动的在页面往返过程中维护服务器控件的状态,减少开发者的工作量,但是需要占用大量的服务器内存资源。因此,在不需要服务器控件状态视图的情况下,应将其EnableViewState属性设置为false,如常用的<asp:Lable>和<asp:Button>控件。

  2.3 Page.IsPostBack的运用

  Page.IsPostBack用于记录页面是否从客户端返回,若为false表示初次运行,否则表示从客户端再次返回该页面。Page.IsPostBack的合理应用可以避免页面在往返过程中的一些不必要的操作。在Page_Load函数及一些只需要初始化一次的事件函数中均可以使用该属性来提高应用程序性能。

void Page_Load(Object o, EventArgs e)
{
 if(! Page.IsPostBack)
 {
  conn=new SqlConnection("server=localhost;uid=sa;pwd=;database=data");
  String sql="select * from student";
  cmd.Fill(ds,"stu");
  mydataGrid.DataBind();
 }
}



  以上代码将保证只有在首次访问该页面时对数据库进行读取并绑定。

  2.4 合理使用DataGrid控件

  DataGrid控件带有最强大的数据显示功能,还内置了对数据的修改、删除、添加、分页等很多功能。如果只需简单的显示数据, DataGrid并非最佳选择。DataGrid控件的分页功能,数据的存储方式(存储在viewstate中)等,虽然让程序开发者使用方便快捷,但由此产生的性能开销不容小视。

  DataList控件比DataGrid功能少了很多。但自定义性强了很多。特有的多行数据显示还是比较方便的。DataGrid能实现的功能,它基本能实现。

  Repeater控件功能最少,但自定义性非常强。由于减少了很多功能,对服务器的性能带来消耗最小。

  因此,在只需简单显示数据列表时,选择Repeater或DataList控件同样可以达到目的,而且减轻了性能上的开销。

数据库访问性能优化

  1、数据库的连接和关闭

  访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。

  连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况。

  2、使用存储过程

  存储过程是存储在服务器上的一组预编译的SQL语句,类似于DOS系统中的批处理文件。存储过程具有对数据库立即访问的功能,信息处理极为迅速。使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就驻留在高速缓存中,以后需要时只需直接调用缓存中的二进制代码即可。

  另外,存储过程在服务器端运行,独立于ASP.NET程序,便于修改,最重要的是它可以减少数据库操作语句在网络中的传输。

  3、优化查询语句

  ASP.NET中ADO连接消耗的资源相当大,SQL语句运行的时间越长,占用系统资源的时间也越长。因此,尽量使用优化过的SQL语句以减少执行时间。比如,不在查询语句中包含子查询语句,充分利用索引等。

from:asp学习网/title:ASP.NET性能优化相关文档/ time:2007-5-9 20:11:22

本文主题,ASP,NET,性能

配置ASP.net的运行环境

asp.net ajax框架 Atlas实现机制浅析

ASP.NET 2.0 异步页面原理浅析

ASP.NET中Session丢失原因与解决方案小结

asp.net:正确判断当前用户角色

推荐:http会话 ASP.NET中Session

asp,asp.net中的session 1

ASP.NET使用Cookie的基础

asp教程 ©2006-2007 aspxuexi.com | 关于站点 | 版权隐私 | 站内搜索
复制或者翻版 请于夜间进行