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

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

auf4f,fr ?o$V0一、缓存51Testing软件测试网"X o*A!RF/i Y4a T0?|

51Testing软件测试网].m#bvj:D

  缓存是ASP.NET中提高性能的重要手段,缓存一般遵循以下原则:51Testing软件测试网+IezqlN

n,kY6I(o,g0  1)  在页面中将静态内容与动态内容分割开来51Testing软件测试网nft2m7}"yB

VFy6UcpR0  考虑将动态内容作成用户控件51Testing软件测试网Jm~;oI:j _O _+J3W1B

n-?2oB"uY7C^0  2)  缓存合理的数据

pGO5_Uq051Testing软件测试网.l)@y/V(eN&gHB t

  一般应当缓存应用程序集的数据、多个用户共同使用的数据、静态数据、生成数据需要很大开销的动态数据、DataSet以及自定义对象等。不要缓存数据库连接对象、DataReader。51Testing软件测试网-V/i2XzF6]*^

sm0G\6o1OoR0  3)  选择适当的方式

8bE Y%B#m*?OE _0

*SO]2da$x{0  如可以使用页面缓存指令,API等。

1Zr5wh#z&jx!PQ051Testing软件测试网xm/k.w F7p0V^+x

  二、视图状态51Testing软件测试网?-Be-o| p

&^/d&IdHO0  视图状态放在页面中名为_VIEWSTATE的表单隐藏域里面,随页面一起被发送到客户端,在用户提交页面时,又被提交到服务器。

;NHz0OX&zj(\6x0

g)lO }V~x'Nb0  1)  如果不需要视图状态,则禁用

lusDks0

9krYV7r}\T H2eb9S0  视图状态默认是允许的,如果页面不进行PostBack,如果不处理服务器控件的事件,如果服务器控件的数据每次都需要重新计算等51Testing软件测试网t~\8i*~X p

51Testing软件测试网5T1{){4|A+b

  2)  尽量减少视图状态中存放的对象51Testing软件测试网g/Lu|#q N Cc5o

4R5f[S;V A+}rt0  三、关于页面处理(减少页面生成的时间和过程)

r!d,za*mz*^j;qj8w0

&o1?],U3~0  1)  应尽量减少页面文件的大小

v!u^Ye&p7L0

{K7r#Dr)F0WQA.WlDz0  2)  通过检测Page.IsPostBack减少代码执行的数量

O/\V0H d.Y0z)N!s ?(d0

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

6F0Y;W$RN0R0

([\f/]C2W/T*]1C0  4)  使用Server.Transfer而不使用Response.Redirect,减少服务器和客户端间的往返51Testing软件测试网[_-g/jo7{2Y1K8|

51Testing软件测试网 L'a O bP

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

5_"i8?2u G4C$D/AO051Testing软件测试网 S!o I2q![0|

  6)  在适当的场合使用服务器控件51Testing软件测试网3\w-}"C3E6Di

51Testing软件测试网i:u9fD2f2rD

  7)  尽量避免嵌套的服务器控件51Testing软件测试网M m,w7L4Wn~

2EY^aY0ej0  四、避免使用Page.DataBind和DataBinder.Eval

A7`P+G(}(Ob rRS051Testing软件测试网5]$rbiY+el

  五、关于Application对象和Session对象51Testing软件测试网K&|Ek'@7T"IiG"o6t1E

51Testing软件测试网 lh*j@8|tx'e"v

  1)  使用静态属性存储数据而不使用Application对象,在Application对象里存储只读类型的数据都将回提高性能51Testing软件测试网1K5r9Z%UaEMN9Z

%_ P9B6Xl0OB e I0  2)  尽量使用InProc模式的Session,这个模式是最快的51Testing软件测试网}k8L#o Ucw

1n5h A9`I.[ I*Y6X}0  3)  在Session里存储基本类型的数据减少序列化的所消耗的资源

Y+_X5x4?/h P051Testing软件测试网AX ?h`s6Kz5SE

  4)  如果不用Session变量,使用EnvableViewState=“false”禁用51Testing软件测试网*YF6_\2Z9~\c-u

%^mYOI:`7i3k7Y {,L%p0  5)  如果不修改Session变量的值,尽量使用ReadOnly属性设置

G+Ob4F:Ee^1O0

{E)z&R)@U#X+j0  六、关于字符串操作

c$|e_2rX&X0

uv/[9[7\"c/j0  1)  尽量使用Response.Write将结果输出到浏览器,这种方法是最快的。不要将字符串连接在一起一次输出。

?t;a)c HQcM9i0

g({k3HV0  2)  在字符串短并且少的情况下可以使用String.Concat方法,而在字符串长度未知,并且字符串大的情况下,使用StringBuilder对象

@*|6IiZi4|_051Testing软件测试网s J%H{K f X

  3)  不要使用strVar==“”来判断字符串是否为“”,这样它会创建额外的字符串,请使用strVar==String.Empty代替或者使用strVar.Length==0来判断51Testing软件测试网+p Q,I0h |+qii-dB

M8GtYi6w g6`$G\0  4)  请使用String.Compare方法进行字符串的比较51Testing软件测试网c(w _/g/G

\w@+A(n"s,h3`C7m0  七、关于数据访问

a,u3I'Z~%U!~5HL051Testing软件测试网s&CT i&f6TQ

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

PH1HO#A4S051Testing软件测试网;S*W b X'Qi

  2)  在数据库中只返回有用的数据结果,不要选择不使用的数据字段51Testing软件测试网7DRe$Ptlz

F(dhSq0  3)  进行使用DataReader进行数据绑定,DataReader是单向只读的51Testing软件测试网C9[ Uw0f,KsYR

@{;{C*BP0y}z0  4)  尽量一次返回多个数据集而不是每个记录集分别打开一次数据库连接进行查询

|)Z4~JTgzV051Testing软件测试网#F,M5Bb t

  5)  尽量晚的打开数据库,尽量早的关闭数据库

1|Q%mcJ#X0

7Cu0E;^8zs%H0  6)  使用连接池提高性能

P$SftB051Testing软件测试网8`q4b4x!]1\

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

7|G9n2I#wPdL051Testing软件测试网[3};KD*]S

  8)  如果多次相同的查询,请使用Command.Prepare方法51Testing软件测试网H5[8i/W0v&^jL:h

51Testing软件测试网k-r,L?8}Ay:^^)u P

  9)  使用GetOrdinal方法预先得到索引值,使用索引值比使用字符串的列名查询数据效率更高51Testing软件测试网b1`/q,Q2w[+J+q&W1_&Q4W

7o!BU6E)sK R,Z Z\0  八、关于代码优化

*y/p)IkA*o C\0

,l&~'[a/M {0  1)  在解析基本数据类型时,使用Try方法如果解析失败,会抛出异常,使用TryParse方法则只执行Else下的语句。51Testing软件测试网z pd_%OG@

51Testing软件测试网-E~6h Kt

  2)  使用AppendAllText、WriteAllBytes等方法读写文件内容可以优化性能

y-C6T8c@%nj0

.Mu\"JK$g7f#V0  3)  将循环判定条件放在for语句外51Testing软件测试网-\c+v-jG@

51Testing软件测试网2]S O;wb Z |AC:b

  4)  避免在循环里创建对象

ov^ \ N y YY051Testing软件测试网v1\r'D,jdQM

  5)  尽量减少装箱的次数51Testing软件测试网(\ixo(YZP

r3K#jRId:C ~ ^0  6)  不要使用例外控制程序的流程51Testing软件测试网_'|6V vs.En

+Qg^UkV3i\0  7)  在循环中不要使用不变的对象属性或者字段

Y JQCV ~J0

~$jgh'Q0  8)  使用for循环代替foreach循环遍历结合内容51Testing软件测试网9q^$cvx}

0s9z?RM0  9)  数组是所有集合中最快的,如果没有特殊需要,尽量使用数组代替集合

z,Z'B5j U8zz t4oP N051Testing软件测试网M!kv`Z)c

  10) 了解各个集合类型的特性,选择合适的类型

1^o,_5f8QX2Md0

} NuC T%H1Lt3kf2l0  11) 使用泛型避免减少装箱、拆箱

JLx0Q ^ be5j qI-h051Testing软件测试网)}H7wxc,u

 51Testing软件测试网EU n-sQ @z"IJ


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

 

评分:0

我来说两句

日历

« 2022-01-18  
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

数据统计

  • 访问量: 37973
  • 日志数: 47
  • 建立时间: 2009-09-03
  • 更新时间: 2010-06-10

RSS订阅

Open Toolbar