[转载]减少ASP.NET运行时的工作

[转载]减少ASP.NET运行时的工作 – 无风 – 博客园.

在底层,.NET和ASP.NET基础结构为了让开发的工作更轻松,做了大量的基础工作。虽然这个体系结构作为一个黑盒很不错,但有时了解一切如故无缝地 运行的实现细节也是很有益的,可以有效地使用运行时获得性能上的优势。

1、视图状态的优化

可以从不同的粒度控制网站的视图状态:在web.config设置EnableViewState为false禁用所有页面的 ViewState,Page的EnableViewState属性继承web.config的设置,如果要在单独的页面可以设置 EnableViewState。另外可以单独设置控件的EnableViewState。

web.config: <pages enableViewState=“false”/>
page:<%@ Page Language=”C#” CodeBehind=”Default.aspx.cs” Inherits=”Default” EnableViewState=”false”%>
控件:<asp:Label ID=“lbInfo” runat=“server” EnableViewState=“false” />

2、尽量减少服务器控件的数量

页面上服务器端的控件应该保持最低的数量上,服务器端的控件不仅生成视图状态,它们也需要额外的运行时处理来绑定到成员变量,呈现,然后卸载。能不用服务 器控件的尽量不用。

3、会话状态的考虑

在创建一个Web应用程序是一个重大的问题就是页面请求直接维护状态,因为http请求时无状态的。例如,知道客户在购物车中放置了什么产品。有很多机制 可以配合使用以取得状态的持久性:cookies,视图状态、QueryString,Session。

ASP.NET提供三种不同的会话状态提供者(In-Proc、状态服务器、数据库),极大地提高了会话功能。进程间会话状态提供者是这三者中最快的,状 态服务器虽然不如进程间的快,但可以在多个服务器器直接共享会话状态。数据库存储时最健壮的但最慢。

无论使用哪种会话状态提供者,都不要滥用会话功能,存储大量的数据或对象,“大量”的定义将取决于需要支持的用户的数量和应用程序的硬件。如果在有些页面 不使用Session可以禁用页面的Session,设置EnableSessionState为False,也可以稍稍减少页面出来的开销。

4、把异常减到最少

异常是通知程序执行期间发生的错误的一个非常有用的机制。和返回代码不同,程序不能忽略异常——它们将会改变程序的执行流。在性能和内存都很关键的应用程 序中经常避开以免额外的开销。在.NET运行时的托管环境中,用try和catch设置异常处理代码只对性能有可以忽略不计的影响,但如果有抛出异常性能 的损失就比较大。

5、使用早期绑定

前期绑定是在编译的时候就确定了要绑定的数据,前期绑定如果失败,会在编译时报编译错误,可以避免在运行时编译错误。而后期绑定是在运行的时候才填充数 据,后期绑定失败只有在运行时的时候才发生。

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏