关于ASP.NET中使用服务器控件影响效率的问题

JerryXia 发表于 , 阅读 (2,036)

用过ASP.NET开发的人会知道,每一个服务器控件在服务器端创建相应的对象,都是以牺牲服务器端的资源为代价的,过多的使用服务器控件会极大的影响程序的性能。但是服务器控件所带来的方便和功能是html控件所不能比拟的。

服务器控件的状态视图属性能够自动的在页面往返过程中维护服务器控件的状态,减少开发者的工作量,但是需要占用大量的服务器内存资源。因此,在不需要服务器控件状态视图的情况下,应将其EnableViewState属性设置为false。

Page.IsPostBack用于记录页面是否从客户端返回,若为false表示初次运行,否则表示从客户端再次返回该页面。Page.IsPostBack的合理应用可以避免页面在往返过程中的一些不必要的操作。在Page_Load函数及一些只需要初始化一次的事件函数中均可以使用该属性来提高应用程序性能。

DataGrid控件带有最强大的数据显示功能,还内置了对数据的修改、删除、添加、分页等很多功能。如果只需简单的显示数据, DataGrid并非最佳选择。DataGrid控件的分页功能,数据的存储方式(存储在viewstate中)等,虽然让程序开发者使用方便快捷,但由此产生的性能开销不容小视。

DataList控件比DataGrid功能少了很多。但自定义性强了很多。特有的多行数据显示还是比较方便的。DataGrid能实现的功能,它基本能实现。

Repeater控件功能最少,但自定义性非常强。由于减少了很多功能,对服务器的性能带来消耗最小。

因此,在只需简单显示数据列表时,选择Repeater或DataList控件同样可以达到目的,而且减轻了性能上的开销。那么如何最不影响性能?你可以直接使用汇编写,通过中断操作网卡,然后提取HTTP信息,那样最少影响,但显然不是你所想要做的。ASP.NET中就应该用控件,而且在ASP.NET引擎设计时就为控件作了相当的优化,当然如果你使用方式不正确,那才可能使真正影响效率的根源。

添加新评论