当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 实现性能目标的几种方法

ASP.NET
使用函数传递参数来执行相应的数据库操作
如何实现在窗体和窗体之间进行传递数据
ASP.NET中文显示之两种解决方法
ASP.NET、JSP及PHP之间的抉择
ASP.NET 2.0发送电子邮件中存在的问题
谈谈HtmlControl与WebControl的区别与用途
从ASP.NET 1.1升级到ASP.NET 2.0要考虑的Cookie问题
通过系统配置来提高ASP.NET应用程序的稳定性
妙用ASP2.0中的URL映射改变网址
AJAX实现web页面中级联菜单的设计
ASP.NET跨页面传值技巧总结
再议ASP.NET DataGrid控件中的“添加新行”功能
Geometry 对象浅析
重构CollapsibleSplitter
如何利用.NET Framework使用RSS feed
ASP.NET获取IP与MAC地址的方法
在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET中为GridView添加删除提示框
ASP.NET 2.0,无刷新页面新境界
看看一个.net版对话框控件

ASP.NET 中的 实现性能目标的几种方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 35 ::
收藏到网摘: n/a


第一次在这里写BLOG,希望不要被大家取笑!
一. 调整程序代码
1.避免多次读取相同数据
在循环语句中不要包含无端重复执行的代码,如:
while ( dr.read())
{
if(dr.item["lastname"]==Request.params[“lastname“])
return true;
else
return false;
}
在上面循环中,对于DataReader返回的每条记录都要对Request.params[“lastname“]进行一次求值,假如dr返回100条记录,我们就对Request.params[“lastname“]求值了100次 ,而这100次有99次都是多余的,下面的代码相对效率就高些
string strlastname=Request.params[“lastname“];
while ( dr.read())
{
if(dr.item["lastname"]==strlastname)
return true;
else
return false;
}
总结:从任何类型的集合中读取值都比较慢,我们需要多次访问它时,可以先在局部变量中保存一个副本
2.对连接字符串使用Response.Write();
连接字符串是一个很费资源的操作,我们要把一个10字节的字符与一个30字节的字符连接起来,代码必须分配一个40字节的内存区域,复制所有字节到这块区域,然后在调整指针位置指到这块区域,在释放原来资源而Response.Write()方法提供了高效的缓冲和连接服务,所以一般情况下以下代码
Response.Write(“HeadLine=“);
Response.Write(“strHeadLine“);
Response.Write(“,Descreption=“);

Response.Write(dr.item[“Descreption“]);
比下列代码
Response.Write(“HeadLine=“)&_
StrHeadLine&_
“,Descreption=“&_
dr.item[“Descreption“];
效率要高
总结:尽量用Response.Write()和StringBuilder来连接字符串
3.避免频繁调用COM组件转为托管代码.
4.避免改变数组维数
在程序中动态改变数组维数其实是用请求大小创建一个新的数组,拷贝原来数组中内容到里面,然后删除原来数组,并用新数组代替旧数组地址,这就耗费了很大力气
5.不要过分依赖于代码中的异常检查
异常处理是很消耗资源的操作,对于普通代码能检测到情况,就应尽少使用异常处理
如try
{
int a,b;
a=100/b;
}
catch
{
b=0;
}
就不如用以下代码效率高
if(b==0)
{
error();
}
效率高
总结:应尽少量的使用异常处理机制
6。应该实现尽早绑定防止后期绑定,做法为在WEB页的@Page指令中加入O ption=“Strict”这一选项可以防止在数据转换时都是数据
二。调整ASP.NET的使用
1.禁用调试和跟踪模式
在部署产品级应用程序时,用这两个模式会显著降低性能
2.预先在Application 对象中载入数据
把一些频繁使用的又相对静止的数据通过一次性读取数据载入Application 中可以提高程序的性能 Application对象一旦建立九一直保存在内存中,直至程序结束,对于WEBl来说就是服务器关闭,但把
几Mbyte的数据存在Application中不是什么好的选择了
3.用Page.IsPostBack来避免不必要的处理
在实际表单提交时没有必要运行初始化代码,ViewState机制会保存我们任何表单的初始化元素
4. 适当使用服务器控件
在控件标记中加runat=server会增加web服务器的负担.除非有必要处理控件的属性,在服务器处理控件的事件时候就不要为标记加此属性
5.在必要的时候使用ViewState
viewstate包含的控件越多,服务器负担就愈大,利用viewstate还可能惹出麻烦,例如一个显示错误信息的label控件,我们希望不要在每一个页面上都重复该消息要清除某一控件的VIewstate 属性可以将其EnableViewSate属性设置为false.
6.在没有使用会话的页面中禁止用Session
7.尽可能的缓存数据和页面输出
Cache可以大幅度提高性能,我们可以在页面中编写OutputCache指令
8.避免对服务器进行不必的数据往返传输可以利用验证控件来减少不必要的往返数据传输后面的比较仓促,老婆催着睡觉,再不睡估计要.....,呵呵.