回复:优化ASP.NET应用程序性能研究与探讨
void Page_Load(Object o, EventArgs e){ if(! Page.IsPostBack) { conn=new SqlConnection("server=localhost;uid=sa;pwd=;database=data"); String sql="select * from student"; cmd.Fill(ds,"stu"); mydataGrid.DataBind(); }}
以上代码将保证只有在首次访问该页面时对数据库进行读取并绑定。
2.4 合理使用DataGrid控件
DataGrid控件带有最强大的数据显示功能,还内置了对数据的修改、删除、添加、分页等很多功能。如果只需简单的显示数据, DataGrid并非最佳选择。DataGrid控件的分页功能,数据的存储方式(存储在viewstate中)等,虽然让程序开发者使用方便快捷,但由此产生的性能开销不容小视。
DataList控件比DataGrid功能少了很多。但自定义性强了很多。特有的多行数据显示还是比较方便的。DataGrid能实现的功能,它基本能实现。
Repeater控件功能最少,但自定义性非常强。由于减少了很多功能,对服务器的性能带来消耗最小。
因此,在只需简单显示数据列表时,选择Repeater或DataList控件同样可以达到目的,而且减轻了性能上的开销。
数据库访问性能优化
1、数据库的连接和关闭
访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。
连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况。