第一讲 性能与缓存
*ASP.NET的性能状况
ASP.NET的引擎从原理上保证高性能
一次编译
Internet Explorer-->Parser-->Compiler-->Assembly Cashe-->Memory-->OutputCache-->回来
第二次运行
Internet Explorer-->-->Assembly Cashe-->Memory-->OutputCache-->回来
*ASP.NET的引擎从原理上保证高性能
CLR Just-in-time Compiler
对多CPU有很好的支持
运行时优化编译
*引擎的优化不能彻底解决性能问题
代码逻辑不优化
引擎无法控制的,潜在的性能优化点
*性能问题与优化原则
性能参数
吞吐量
响应时间
执行时间
可伸缩性
基本优化原则
减少不必要的资源消耗
CPU,内存
*性能提高的技巧
避免不必要的执行操作
Page_Load和IsPostBack
void Page_Load(Object sender,EventArgs e)
{
if(!Page.IsPostBack){......}
}
*页面执行顺序
Page_Load-->Properties Change-->Action
*性能提高的技巧
关闭不必要的Session状态
<%@ Page EnableSessionState="false" %>
注意使用Server Control
不必要时可以不使用Server Control
不必要时可以关闭ViewState
<asp:datagrid EnableViewState="false" runat="server" />
<%@ Page EnableViewState="false" %>
*不要用Exception控制程序流程
try
{
result=100/num;
}
catch(Exception e)
{
result=0;
}
//--------------------------
if(num!=0)
result=100/num;
else
result=0;
*禁用VB和JScript动态数据类型
<%@ Page Language="VB" Strict="true" %>
使用存储过程数据访问
只读数据访问不要使用DataSet
使用SqlDataReader代替DataSet
SqlDataReader是read-only,forward-only
关闭ASP.NET的Debug模式
使用ASP.NET Output Cache缓冲数据
*ASP.NET输出缓冲
页面缓冲
<%@OutputCache %>
Duration
VaryByParam
片断缓冲
VarByControl
(用户空件)
*数据缓冲
过期依赖条件
Cache.Insert("MyData",Source,newCacheDependency(Server.MapPath("authors.xml")));
Cache.Insert("MyData",Source,null,DateTime.Now.AddHours(1),TimeSpan.Zero);
Cache.Insert("MyData",Source,null,DateTime.MaxValue,TimeSpan.FromMinutes(20));