并不是在项目开发完毕后进行性能优化,而是在初步设计的时候考虑的问题
1 性能评测
(1) Client响应时间(TTLB-TTFB);网络带宽和web程序因素的影响。一般不能超过8secends;
(2) 服务器吞吐量(处理请求/秒)。
2 评测方法-Stress Testing压力测试
工具 - Web Application Stress Tool
http://www.microsoft.com/techent/treeview/default.asp?url=/technet/itsolutions/intranet/downloads/webstres.asp
ACT(VS.NET Enterprise带有的工具)
3 性能关注
(1) CPU使用率;
(2) Request In Application Queue请求缓存排队,如果出现线性增长表示服务器达到满负荷;
(3) Request/Sec;
(4) ErrorsTotal(应=0);
4 压力测试注意
(1) 独立于web服务器运行测试工具;
(2) 模拟不同的客户端带宽级别;
(3) 消除应用之外的任何瓶颈(例如网络)。
5 逻辑设计 建议:3层模型
page(.aspx) and User Controls (.ascx)UI
Business and Data Access classes in \bin dir
Data within a SQL Database via SPROCs
6 DataReader VS DataSet
(1) DataReader: 单向读取;轻量快速;
(2) DataSet: 非连接的数据访问;内部利用DataReader读取数据;完成读取后自动关闭;
(3) On average,a datareader is 16% faster than DataSet
7 连接池
(1) 自动缓存/重新使用连接;
(2) 尽晚打开连接,尽早关闭;
(3) 不同的连接字符串会看成不同的连接池;
(4) 在web.config存储单个连接字符串,然后读取;
8 使用存储过程
(1) DBA可以更轻松的性能调试;
(2) 防止SQL注入攻击;
(3) 在企业管理器里面关闭动态SQL支持,强制使用存储过程;
9 服务器控件性能优化重点
(1) ViewState
(2) Number of controls generated(especially for lists)
10 ViewState管理
(1) ASP.NET controls能够维护页面Control元素的状态;
(2) 页面PostBack,ViewState就会被提交;
(3) 好处:填写的信息可以再次显示,有些数据绑定无需重新从数据库里面提取;
(4) 负面:增加网络负荷,服务器性能消耗;
11 利用缓存技术
OutputCaches
12 性能配置
debug="false"