2、
Select * from UserTest where condition1=’conditions’ and condition2=’conditions’ and condition3=’conditions’ ……
像这样一条SQL语句,当where后的条件非常多时,很多程序员都会不假思索地快速顺序写出来,一般很少有人会有精力想到应当把经常查询的条件放在前面。然而,这是非常重要的,一个百万级的数据库其数据的读取速度也许就浪费在你的一条非常普通的查询语句里了。
3、 在DotNet(C#)开发环境中,使用最多的对象莫过于String类。一些程序员经常会定义非常多的String类型的对象,然后对它们进行处理。比如string1 + string2 + ……。其实,从性能方面的考虑,他这样的做法是非常浪费性能的,同样的字符处理功能用StringBuilder类来实现就会非常多地节省性能。
1. 使用Page.IsPostBack这一项大多数人都做到了.
If (!Page.IsPostBack)
{
dbAcess oWS=new dbAccess();
DataSet ds=oWS.GetNewsInfoDS();
}
2. 使用存储进程
优点:
o Stored Procedure 是在编译后运行
o 系统体系结构自然分层
o 安全性
微软在Best Practice中特别推崇,广泛被应用于大多数ASP.Net开发项目中.
3a. 使用HttpServerUtility.Transfer方法
服务器的Request方法已被广泛应用
但它不必要地进行了服务器到前后台的往返信息交換
应使用HttpServerUtility.Transfer方法,在同一系统内调用时,简洁,明快
例如, 过去您用Response.Redirect(“vip.aspx”);现在您不妨考虑使用Server.Transfer(“vip.aspx”);前者包含了服务器到前后台的往返信息交換, 后者则是直接跳过去了. 它们的微妙区别是:
Response.Redirect 将客户端重定向到新的 URL。指定新的 URL 并指定当前页的执行是否应终止。
Server.Transfer对于当前请求,终止当前页的执行,并使用指向一个新页的指定 URL 路径来开始执行此新页。
3b.限制验证控件的使用
验证控件Validate Control的确方便,但为性能考虑,也尽量少用.有时可以在客户端用简单的方法搞定.
总之是尽可能避免进行服务器到前后台的往返信息交換.
4a. 只存储必要的View State服务器控件将View State 存储设定为默认,这有时是不必要的.
简单服务器控件还好, 如Label, Text Box等,但一个DataGrid需要60K以上的数据传输.
4b. 不要依靠.Net的Exception.Net的Exception Handling是一种昂贵的错误处理机制,应尽可能用自制的错误处理机制,不要依靠.Net的Exception. 在.Net 进行Exception Handling 的时候, 服务器的资源被大量占用, 是一种非常不经济的办法.
5. 限制Session State的使用ASP时代后, ASP.Net 的Session State引入是一项巨大的进步,可是您应尽可能少用它.
甚至使Session State变成只读状态也是好的.例如,在用户登录后,以后其它页加入如下码:<% Page EnableSessionState=“ReadOnly”%>
6.限制使用服务器控件 顾名思义,服务器控件是在服务器端运行的.它可以
o 动态掌控控件Property等
o 菅理View State
o 掌控服务器发生事件
然而,在可以使用HTML控件时尽量使用HTML控件.
7. 对系统预编译
编制一个简单的程序,自动走遍ASP.Net系统的每一页.最不济也应手工访向系统的几个主页.
注: 据称新版.Net (Whidbey)解决了这一问题.
8. 关于 ASP.Net Caching
暂存Caching是一种性能优化的重要手段.但使用时小心.设太多或太少Caching, 暂存的定时等都对性能有莫大影响.
怎样找到一种平衡 ?
没有一定之规, 现在仍是一项研究课题.
总结
我们注意到, ASP.Net性能优化的八个设计要点实际上是一种还濮归真的过程应用.因为,最后落实在系统表现层的仍然是最最基本的HTML码.它应该是愈简单愈好.这也是用户可以体会到的唯一东西.
.Net的每一个特性或优点都有其相应的代价. 设计者掉以轻心的结果会使.Net这一先进技术转变成落后的,乃至低能的技术手段.