优化ASP.NET应用程序性能研究与探讨2
点击次数:34 次 发布日期:2008-11-26 11:43:23 作者:源代码网
|
源代码网推荐 源代码网推荐 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语句以减少执行时间。比如,不在查询语句中包含子查询语句,充分利用索引等。 源代码网推荐 源代码网推荐 字符串操作性能优化 源代码网推荐 源代码网推荐 1、使用值类型的ToString方法 源代码网推荐 源代码网推荐 在连接字符串时,经常使用"+"号直接将数字添加到字符串中。这种方法虽然简单,也可以得到正确结果,但是由于涉及到不同的数据类型,数字需要通过装箱操作转化为引用类型才可以添加到字符串中。但是装箱操作对性能影响较大,因为在进行这类处理时,将在托管堆中分配一个新的对象,原有的值复制到新创建的对象中。 源代码网推荐 源代码网推荐 使用值类型的ToString方法可以避免装箱操作,从而提高应用程序性能。 源代码网推荐 源代码网推荐 2、运用StringBuilder类 源代码网推荐 源代码网推荐 String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。 源代码网推荐 源代码网推荐 在处理字符串时,最好使用StringBuilder类,其.NET 命名空间是System.Text。该类并非创建新的对象,而是通过Append,Remove,Insert等方法直接对字符串进行操作,通过ToString方法返回操作结果。 源代码网推荐 源代码网推荐 其定义及操作语句如下所示: 源代码网推荐 源代码网推荐 int num; 源代码网推荐 System.Text.StringBuilder str=new System.Text.StringBuilder(); //创建字符串 源代码网推荐 str.Append(num.ToString()); //添加数值num 源代码网推荐 Response.Write(str.ToString); //显示操作结果 源代码网推荐 源代码网推荐 ASP.NET应用程序性能测试 源代码网推荐 源代码网推荐 在对ASP.NET应用程序进行性能测试之前,应确保应用程序没有错误,而且功能正确。具体的性能测试可以采用以下工具进行: 源代码网推荐 Web Application Strees Tool (WAS)是Microsoft发布的一个免费测试工具,可以从http://webtool.rte.microsoft.com/上下载。它可以模拟成百上千个用户同时对web应用程序进行访问请求,在服务器上形成流量负载,从而达到测试的目的,可以生成平均TTFB、平均TTLB等性能汇总报告。 源代码网推荐 源代码网推荐 Application Center Test (ACT) 是一个测试工具,附带于Visual Studio.NET的企业版中,是Microsoft正式支持的web应用程序测试工具。它能够直观地生成图表结果,功能比WAS多,但不具备多个客户机同时测试的能力。 源代码网推荐 源代码网推荐 服务器操作系统"管理工具"中的"性能"计数器,可以对服务器进行监测以了解应用程序性能。 源代码网推荐 源代码网推荐 结论 源代码网推荐 源代码网推荐 对于网站开发人员来说,在编写ASP.NET应用程序时注意性能问题,养成良好的习惯,提高应用程序性能,至少可以推迟必需的硬件升级,降低网站的成本。 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
