提高性能
建议:
1)尽量不使用Session
2)尽量不使服务器端控件,ViewState
3)使用存储过程
4)关闭Debug
5)只读数据不使用DataSet
6)启用Cache
7)尽量对数据库的操作1-2完成,减少连接次数
8)写高效的sql语句
9)及时地关闭连接
10)使用StringBuilder
ASPNET中分三层
1)数据层
1)使用合适的Provider,例如SQL数据库使用SqlClient
2)尽量使用存储过程(安全,性能高是编译过的sql语句)
3)假如是从数据读取大量数据用DataReader,它是不关闭连接的,
对于返回大量的数据(更新,插入)使用DataSet(他是面向无连接的,
但是他的实质其实也是使用DataReade获取数据)
4)ExecuteNonQuery对数据更新只返回影响的行数(更新使用它
ExecuteScalar返回第一行的第一列(统计使用)
5)使用连接池,ADONET里面子带的,但是应该及时地释放连接,避免连接泄露
string strconnpool="server=(loacl);database=pubs;uid=sa;pwd=1234;pooling=true";
2)表示层
1)数据邦定不使用<%#DataBinder.Eval(Container.DataItem,"username")%>
它使用了反射机制,但是影响了性能
使用:<@%((DataRowView)Container.DataItem)["username"]%>
2)尽量不使用ViewState(页面级和控件级)
全局禁用
<configuration>
<system.web>
<pages enableViewState="false"/>
</system.web>
</configuration>
页面禁用
< %@Page EnableViewState="false"%>
3)使用缓存, 客户端和服务器端缓存
1)输入缓存
< %@OutputCache Duration="10" VaryByParam="None"%> 10表示缓存时间
或者
Response.Cache.SetExpires(DataTime.Now.AddSeconds(10));
Response.Cache.SetCacheability(HttpCacheablility.Public);
2)数据缓存
Cache["username"]="prolove";
Cache.Remove("username");
Cache.Add();
Cache.Inset()//可以设置缓存策略(1 不经常访问缓存删除 2 时间控制,3 文件变化,缓存变化)
例如读取XML文件
private void ReadXml(string filenamepath)
{
DataView dv=(DateView)Cache["datacache"];
if(dv==null)
{
DataSet ds=new DataSet;
FileStream fs=new FileStream(filenamepath,FileMode.Open,FileAccess.Read);
StreamReader sr=new StreamReader(fs);
ds.ReadXml(sr);
fs.Close();
dv=new DataView(ds.Table[0]);
Cache.Insert("datacache",dv,new CacheDependency(filenamepath));
}
dgShow.DataSource=dv;
dgShow.DataBind();
}
建议:
1)尽量不使用Session
2)尽量不使服务器端控件,ViewState
3)使用存储过程
4)关闭Debug
5)只读数据不使用DataSet
6)启用Cache
7)尽量对数据库的操作1-2完成,减少连接次数
8)写高效的sql语句
9)及时地关闭连接
10)使用StringBuilder
ASPNET中分三层
1)数据层
1)使用合适的Provider,例如SQL数据库使用SqlClient
2)尽量使用存储过程(安全,性能高是编译过的sql语句)
3)假如是从数据读取大量数据用DataReader,它是不关闭连接的,
对于返回大量的数据(更新,插入)使用DataSet(他是面向无连接的,
但是他的实质其实也是使用DataReade获取数据)
4)ExecuteNonQuery对数据更新只返回影响的行数(更新使用它
ExecuteScalar返回第一行的第一列(统计使用)
5)使用连接池,ADONET里面子带的,但是应该及时地释放连接,避免连接泄露
string strconnpool="server=(loacl);database=pubs;uid=sa;pwd=1234;pooling=true";
2)表示层
1)数据邦定不使用<%#DataBinder.Eval(Container.DataItem,"username")%>
它使用了反射机制,但是影响了性能
使用:<@%((DataRowView)Container.DataItem)["username"]%>
2)尽量不使用ViewState(页面级和控件级)
全局禁用
<configuration>
<system.web>
<pages enableViewState="false"/>
</system.web>
</configuration>
页面禁用
< %@Page EnableViewState="false"%>
3)使用缓存, 客户端和服务器端缓存
1)输入缓存
< %@OutputCache Duration="10" VaryByParam="None"%> 10表示缓存时间
或者
Response.Cache.SetExpires(DataTime.Now.AddSeconds(10));
Response.Cache.SetCacheability(HttpCacheablility.Public);
2)数据缓存
Cache["username"]="prolove";
Cache.Remove("username");
Cache.Add();
Cache.Inset()//可以设置缓存策略(1 不经常访问缓存删除 2 时间控制,3 文件变化,缓存变化)
例如读取XML文件
private void ReadXml(string filenamepath)
{
DataView dv=(DateView)Cache["datacache"];
if(dv==null)
{
DataSet ds=new DataSet;
FileStream fs=new FileStream(filenamepath,FileMode.Open,FileAccess.Read);
StreamReader sr=new StreamReader(fs);
ds.ReadXml(sr);
fs.Close();
dv=new DataView(ds.Table[0]);
Cache.Insert("datacache",dv,new CacheDependency(filenamepath));
}
dgShow.DataSource=dv;
dgShow.DataBind();
}