ASP.NET性能优化八条建议
更新时间:2013年01月06日 14:53:03 作者:
ASP.NET性能优化建议包括以下几点数据库访问性能优化,字符串操作性能优化,禁用调试模式等等,感兴趣的盆友可以参考下
1、数据库访问性能优化
A、尽量减少数据库连接,并充分利用每次数据库连接:连接的创建、打开和关闭是有开销的。可以使用连接池
B、合理使用存储过程:存储过程是存储在服务器端的一组预编译的SQL。使用存储过程可以避免对SQL的多次编译,后续查询可以复用之前的执行计划。另外存储过程可以减少SQL语句网络传输开销
C、优化SQL语句:这个就太多了,如合理使用索引、视图,避免复杂子查询
2、字符串操作性能优化
A、使用值类型的ToString()方法
对不同类型进行 + 连接时,会发生装箱操作转化为引用类型再添加到字符串中。装箱操作会在托管堆中分配一个新对象,将原有的值复制到新对象中,代价很高。使用ToString()方法可以避免装箱,从而提高性能
B、利用StringBuilder类
3、禁用调试模式
4、只要合适,尽量缓存数据和页面输出
5、不要依赖代码中的异常来控制程序正常流程
异常的开销是很大的。所以慎用异常。
6、使用Page.IsPostBack避免往返过程的不必要处理
void Page_Load(Object sender, EventArgs e) // Set up a connection and command
{
if (!Page.IsPostBack) // 第一次加载时才填充数据
{
String query = "select * from Authors where FirstName like '%JUSTIN%'";
myCommand.Fill(ds, "Authors");
myDataGrid.DataBind();
}
}
7、如果不使用会话状态,可以禁用它或者设置只读
A、若要禁用页的会话状态,请将 @ Page 指令中的 EnableSessionState 属性设置为false。例如:
<%@ Page EnableSessionState="false" %>
B、注意如果页需要访问会话变量,但不打算创建或修改它们,则将 @ Page 指令中的 EnableSessionState 属性设置为 ReadOnly。
8、利用成熟的工具进行性能测试
A、尽量减少数据库连接,并充分利用每次数据库连接:连接的创建、打开和关闭是有开销的。可以使用连接池
B、合理使用存储过程:存储过程是存储在服务器端的一组预编译的SQL。使用存储过程可以避免对SQL的多次编译,后续查询可以复用之前的执行计划。另外存储过程可以减少SQL语句网络传输开销
C、优化SQL语句:这个就太多了,如合理使用索引、视图,避免复杂子查询
2、字符串操作性能优化
A、使用值类型的ToString()方法
对不同类型进行 + 连接时,会发生装箱操作转化为引用类型再添加到字符串中。装箱操作会在托管堆中分配一个新对象,将原有的值复制到新对象中,代价很高。使用ToString()方法可以避免装箱,从而提高性能
B、利用StringBuilder类
3、禁用调试模式
4、只要合适,尽量缓存数据和页面输出
5、不要依赖代码中的异常来控制程序正常流程
异常的开销是很大的。所以慎用异常。
6、使用Page.IsPostBack避免往返过程的不必要处理
复制代码 代码如下:
void Page_Load(Object sender, EventArgs e) // Set up a connection and command
{
if (!Page.IsPostBack) // 第一次加载时才填充数据
{
String query = "select * from Authors where FirstName like '%JUSTIN%'";
myCommand.Fill(ds, "Authors");
myDataGrid.DataBind();
}
}
7、如果不使用会话状态,可以禁用它或者设置只读
A、若要禁用页的会话状态,请将 @ Page 指令中的 EnableSessionState 属性设置为false。例如:
复制代码 代码如下:
<%@ Page EnableSessionState="false" %>
B、注意如果页需要访问会话变量,但不打算创建或修改它们,则将 @ Page 指令中的 EnableSessionState 属性设置为 ReadOnly。
8、利用成熟的工具进行性能测试
相关文章
asp.net TemplateField模板中的Bind方法和Eval方法
在TemplateField模板中为了能够有限制的或者取出数据库中某列的值时,可以用Bind和Eval方法来实现。以下是Bind方法的格式,Eval的格式也是和Bind一样的。 Bind("列的名称","显示的格式文")2009-06-06asp.net repeater实现批量删除时注册多选框id到客户端
repeater批量删除时注册多选框id到客户端的实现代码2008-11-11详解CentOS 7.4下如何部署Asp.Net Core结合consul
这篇文章主要介绍了详解CentOS 7.4下如何部署Asp.Net Core结合consul,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-06-06
最新评论