从编码方面提高网站性能的手段
上一篇 / 下一篇 2009-09-03 15:49:09 / 个人分类:性能测试
一、缓存
nu&h^)Iw K*{0)F.o R9r L4n0 缓存是ASP.NET中提高性能的重要手段,缓存一般遵循以下原则:
X;f{ m8I:T~ ^ l,?0H\ D}_k_ UlP#l0 1) 在页面中将静态内容与动态内容分割开来
)f}"Ow7K im0#p;p*CI p_0 考虑将动态内容作成用户控件
&B#MACEi_6F L yi],T0#ID8zNR0 2) 缓存合理的数据
k { i+~ T"{04JP-dS$P ].\ a0 一般应当缓存应用程序集的数据、多个用户共同使用的数据、静态数据、生成数据需要很大开销的动态数据、DataSet以及自定义对象等。不要缓存数据库连接对象、DataReader。
9Hn;sdt9H0r00l|ZU/l$awr5u0 3) 选择适当的方式51Testing软件测试网4R ie S+bA3uY0S
b ]N.i$X*b J0 如可以使用页面缓存指令,API等。
Im0z7}&SI051Testing软件测试网!b+HvX(E#VX二、视图状态51Testing软件测试网g%Y'R{dm!e
(`;B#ya$a`4u.|-h6CQg0 视图状态放在页面中名为_VIEWSTATE的表单隐藏域里面,随页面一起被发送到客户端,在用户提交页面时,又被提交到服务器。51Testing软件测试网(FTR"C+PV8K
51Testing软件测试网(FKr:i\OM)B1) 如果不需要视图状态,则禁用
!u(y,l}y!hE*C051Testing软件测试网 Q!T&aO,G!lP视图状态默认是允许的,如果页面不进行PostBack,如果不处理服务器控件的事件,如果服务器控件的数据每次都需要重新计算等51Testing软件测试网OGd(x:R1H;x
51Testing软件测试网KCUc7],G7C2) 尽量减少视图状态中存放的对象51Testing软件测试网6] RiDZ;bD&| FR^
51Testing软件测试网 C/zEBit$V [CHO1P三、关于页面处理(减少页面生成的时间和过程)51Testing软件测试网j3l:V3XF
51Testing软件测试网s1?.ip^a6Z$k1) 应尽量减少页面文件的大小
:A+`v1^;c1Bek051Testing软件测试网D[s\ i2) 通过检测Page.IsPostBack减少代码执行的数量
%eth9?$]n-_(e051Testing软件测试网*ysG'kZ4as3) 禁止使用Debug=“true”,减少页面生成过程中生成额外的调试信息
(b'^a\.aKo1c051Testing软件测试网9D4ymL/|6v4) 使用Server.Transfer而不使用Response.Redirect,减少服务器和客户端间的往返
KZ!n[-t(v%LD]051Testing软件测试网 yjv,sn _&_5) 尽量使用客户端验证,减少服务器和客户端间的往返
)U?E3j o"IYC P c7s0,UJx:lFB3ld.}8]0 6) 在适当的场合使用服务器控件51Testing软件测试网}3f0Z]!S
L!b[U.~5U#P{0 7) 尽量避免嵌套的服务器控件51Testing软件测试网kV3LiRX X$l G XVM
51Testing软件测试网!RI8rP!oV+Y8`M,C.V四、避免使用Page.DataBind和DataBinder.Eval51Testing软件测试网#q)v OI%F t#b9kn
K"@N4`C5O.i0 五、关于Application对象和Session对象51Testing软件测试网&P%z+X mU6J!vi
XOXok#qM{{0 1) 使用静态属性存储数据而不使用Application对象,在Application对象里存储只读类型的数据都将回提高性能51Testing软件测试网2DG8w ^,dM
51Testing软件测试网d?W%bh X E2) 尽量使用InProc模式的Session,这个模式是最快的
JEP+e.D jO6`0m kQ:ffR N0 3) 在Session里存储基本类型的数据减少序列化的所消耗的资源51Testing软件测试网GT.H\F1r+e1zzO
51Testing软件测试网 [ V2mQ4j"_K4) 如果不用Session变量,使用EnvableViewState=“false”禁用51Testing软件测试网l&K-G*zZ`:I:j.~8i
51Testing软件测试网!Y0\5|&` Q|5) 如果不修改Session变量的值,尽量使用ReadOnly属性设置
%v xG#?"J051Testing软件测试网g;M%m;UfT-GW&?六、关于字符串操作
4t TyG9OJ%O+`051Testing软件测试网_4Mr*cd4M#Z i&c LL1) 尽量使用Response.Write将结果输出到浏览器,这种方法是最快的。不要将字符串连接在一起一次输出。51Testing软件测试网xxNi#aa"wn&D
y+_2nN/RE0 2) 在字符串短并且少的情况下可以使用String.Concat方法,而在字符串长度未知,并且字符串大的情况下,使用StringBuilder对象51Testing软件测试网 a B(I6z _+s[8`
nU5{zh0 3) 不要使用strVar==“”来判断字符串是否为“”,这样它会创建额外的字符串,请使用strVar==String.Empty代替或者使用strVar.Length==0来判断
!Z1^C }f@'pj$rp0