从编码方面提高网站性能的手段

上一篇 / 下一篇  2009-09-03 15:49:09 / 个人分类:性能测试

51Testing软件测试网)~$Q?o.ty)KF:X'uw`

一、缓存

nu&h^)Iw K*{0

)F.oR9r L4n0  缓存是ASP.NET中提高性能的重要手段,缓存一般遵循以下原则:

X;f{m8I:T~ ^l,?0

H \D}_k_ UlP#l0  1)  在页面中将静态内容与动态内容分割开来

)f}"Ow7Kim0

#p;p*CI p_0  考虑将动态内容作成用户控件

&B#MACE i_6F L yi],T0

#ID8zNR0  2)  缓存合理的数据

k{i+~ T"{0

4JP-dS$P ].\ a0  一般应当缓存应用程序集的数据、多个用户共同使用的数据、静态数据、生成数据需要很大开销的动态数据、DataSet以及自定义对象等。不要缓存数据库连接对象、DataReader。

9Hn;s dt9H0r0

0l |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#y a$a`4u.|-h6CQg0  视图状态放在页面中名为_VIEWSTATE的表单隐藏域里面,随页面一起被发送到客户端,在用户提交页面时,又被提交到服务器。51Testing软件测试网(FTR"C+PV8K

51Testing软件测试网(FKr:i\OM)B

  1)  如果不需要视图状态,则禁用

!u(y,l}y!hE*C051Testing软件测试网Q!T&aO,G!lP

  视图状态默认是允许的,如果页面不进行PostBack,如果不处理服务器控件的事件,如果服务器控件的数据每次都需要重新计算等51Testing软件测试网O Gd(x:R1H;x

51Testing软件测试网KCUc7],G7C

  2)  尽量减少视图状态中存放的对象51Testing软件测试网6] RiDZ;bD&| FR^

51Testing软件测试网C/zEBit$V [C HO1P

  三、关于页面处理(减少页面生成的时间和过程)51Testing软件测试网j3l:V3XF

51Testing软件测试网s1?.ip^a6Z$k

  1)  应尽量减少页面文件的大小

:A+`v1^;c1Bek051Testing软件测试网D[s\ i

  2)  通过检测Page.IsPostBack减少代码执行的数量

%et h9?$]n-_(e051Testing软件测试网*ysG'kZ4as

  3)  禁止使用Debug=“true”,减少页面生成过程中生成额外的调试信息

(b'^a\.a Ko1c051Testing软件测试网9D4ymL/|6v

  4)  使用Server.Transfer而不使用Response.Redirect,减少服务器和客户端间的往返

KZ!n[-t(v%LD]051Testing软件测试网 yjv,sn _&_

  5)  尽量使用客户端验证,减少服务器和客户端间的往返

)U?E3j o"IYCPc7s0

,UJx:lFB3ld.}8]0  6)  在适当的场合使用服务器控件51Testing软件测试网}3f0Z]!S

L!b[U.~5U#P{0  7)  尽量避免嵌套的服务器控件51Testing软件测试网kV3LiRXX$l G XVM

51Testing软件测试网!R I8rP!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

XOXo k#qM{{0  1)  使用静态属性存储数据而不使用Application对象,在Application对象里存储只读类型的数据都将回提高性能51Testing软件测试网2DG8w ^,d M

51Testing软件测试网d ?W%bh X E

  2)  尽量使用InProc模式的Session,这个模式是最快的

JEP+e.D jO6`0

m kQ:ffR N0  3)  在Session里存储基本类型的数据减少序列化的所消耗的资源51Testing软件测试网G T.H\F1r+e1zzO

51Testing软件测试网[V2mQ4j"_K

  4)  如果不用Session变量,使用EnvableViewState=“false”禁用51Testing软件测试网l&K-G*zZ`:I:j.~8i

51Testing软件测试网!Y0\5|&` Q|

  5)  如果不修改Session变量的值,尽量使用ReadOnly属性设置

%vxG#?"J051Testing软件测试网g;M%m;UfT-GW&?

  六、关于字符串操作

4t TyG9OJ%O+`051Testing软件测试网_4Mr*c d4M#Z i&c LL

  1)  尽量使用Response.Write将结果输出到浏览器,这种方法是最快的。不要将字符串连接在一起一次输出。51Testing软件测试网xxNi#aa"w n&D

y+_2nN/RE0  2)  在字符串短并且少的情况下可以使用String.Concat方法,而在字符串长度未知,并且字符串大的情况下,使用StringBuilder对象51Testing软件测试网 a B(I6z _+s[8`

n U5{ zh0  3)  不要使用strVar==“”来判断字符串是否为“”,这样它会创建额外的字符串,请使用strVar==String.Empty代替或者使用strVar.Length==0来判断

!Z1^ C }f @'pj$r p0

[s U GRR4aj0  4)  请使用String.Compare方法进行字符串的比较51Testing软件测试网 fo.R3R~

51Testing软件测试网2S"D+C ]-N7c

  七、关于数据访问51Testing软件测试网~\%b!?U

51Testing软件测试网^(uv$eej~j8J

  1)  尽量使用存储过程返回数据,不要直接在代码中进行查询

9Wok:vBr ]051Testing软件测试网3ol7o]{EW&k h

  2)  在数据库中只返回有用的数据结果,不要选择不使用的数据字段

H*@/]'[2D1t0

7Q;gzo(WB ]7kKp6R AU!n0  3)  进行使用DataReader进行数据绑定,DataReader是单向只读的

.oW6q/qM e#z4?051Testing软件测试网4e'ws?:d&F+n

  4)  尽量一次返回多个数据集而不是每个记录集分别打开一次数据库连接进行查询

;f;CzG$j;{{*j@b0

"sBj,a [w+G0  5)  尽量晚的打开数据库,尽量早的关闭数据库51Testing软件测试网_0RE6h6dMEF

(M,J*^u&i-hb-qNz6u$f0  6)  使用连接池提高性能

%U5d m_ sSbb051Testing软件测试网!uT1m\9o `$e%T

  7)  使用ExecuteNonQuery方法执行不返回数据的操作,使用ExecuteScalar方法返回单个结果的操作,使用Commandbehavīor.Sequentialaccess返回二进制数据或者大数据

9v{2Z h-VN y,r5Cr051Testing软件测试网aB7pwrnF

  8)  如果多次相同的查询,请使用Command.Prepare方法

"l8y.?]:B$D#j-tR0

-^8BR0r|2f0  9)  使用GetOrdinal方法预先得到索引值,使用索引值比使用字符串的列名查询数据效率更高

}+i)V3pf a1Ut0

*`*z RpkNuq7X$m.s0  八、关于代码优化

-D&o$Hu!sf"[#vxF$X0

*f De!V0FF0  1)  在解析基本数据类型时,使用Try方法如果解析失败,会抛出异常,使用TryParse方法则只执行Else下的语句。

|KU;Q-jp0

^ ZRU?Hj,f0  2)  使用AppendAllText、WriteAllBytes等方法读写文件内容可以优化性能51Testing软件测试网;EL,Ou,L{Jfb g

{F/?"E;J zK)A0  3)  将循环判定条件放在for语句外51Testing软件测试网1|S?;R9M"r2V%eG Gy

X:[-YBd0  4)  避免在循环里创建对象51Testing软件测试网x5s0?{%t_2g

:xk5IzE0  5)  尽量减少装箱的次数51Testing软件测试网 S o(Q w%QG

U.}X)y8Z"N \vF.aT0  6)  不要使用例外控制程序的流程

2Y(~)x+{8r051Testing软件测试网7j` L8m6E#o

  7)  在循环中不要使用不变的对象属性或者字段

GN9x IT-m [0

jSe$|\C5O*A0  8)  使用for循环代替foreach循环遍历结合内容

/M-Zo!}"\:lG s5`0

;{6`C0K^y[-Q0  9)  数组是所有集合中最快的,如果没有特殊需要,尽量使用数组代替集合51Testing软件测试网]X0d'^$s.A

VU:h8_g8j | kY0e0  10) 了解各个集合类型的特性,选择合适的类型51Testing软件测试网A4l#b"ylegU4v

Ojh&R']0  11) 使用泛型避免减少装箱、拆箱51Testing软件测试网\ e6qjf4ANm

51Testing软件测试网({.LevhMM}s

 51Testing软件测试网Ls9Y,M"q dX's Lo


TAG: 性能测试 Web测试 web测试

 

评分:0

我来说两句

Open Toolbar