asp.net中挺高性能的24种方法

那性能问题到底该如何解决?如下是应用系统发布前,做为 .NET 开发人员须要检查的点。web

1.debug=「false」数据库

当建立 ASP.NET Web应用程序,默认设置为「true」。开发过程当中,设置为「true」是很是有用多,但在应用程序发布部署时,需将其设置为「false」。编程

<compilation defaultLanguage="C#" debug="false" targetFramework="4.0" /> 

2.关闭 tracing(追踪)c#

tracing 是很是可怕的,你有没有忘记关闭它。假如没用,请肯定编辑 web.config 而且关闭它。它将占用大量您的程序资源。缓存

<trace enabled="false" requestLimit=”10” pageoutput=”false” traceMode=”SortByTime” localOnly=”true”> 

3.禁用 session性能优化

假如您用不到 session 会话跟踪请务必禁用它。您能够在每一个 asp.net 页面中设置以下:服务器

<%@ page language="c#" codebehind="webform1.aspx.cs" autoeventwireup="false" inherits="webapplication1.webform1" enablesessionstate="false" %> 

4.使用发布版本部署应用网络

部署应用程序到生产环境时,要确保使用的发布版本模式,而不是调试模式。若是使用调试模板极容易发生请求超时。部署成发布版本,你将会发现速度有很大的提高。session

5.关闭页面的 View State多线程

View State 主要是在提交之后回显用的,它只有在页面中的数据是提交到本页时才有用。其默认是「true」。若是你没有使用表单数据回传,那么能够关闭 View State。

<%@ Page EnableViewState="false" %> 

6.避免使用 Response.Redirect

Redirect(重定向)很是麻烦,它仅用于用于从当前物理服务器开发跳转到其它服务器。若是只是在本服务器开发内页面跳转请使用 Server.Transfer 语法,这样会减小不少没有必要的客户端重定向。

7.运用 StringBuilder 类以及使用 ToString()方法

String 类对象是不可改变的,对于 String 对象的从新赋值在本质上是从新建立了一个 String 对象并将新值赋予该对象,其方法 ToString 对性能的提升并不是很显著。在处理字符串时,最好使用 StringBuilder 类,其 .NET 命名空间是 System.Text。该类并不是建立新的对象,而是经过 Append,Remove,Insert 等方法直接对字符串进行操做,经过 ToString 方法返回操做结果。 其定义及操做语句以下所示

int num;   System.Text.StringBuilder str = new System.Text.StringBuilder(); //建立字符串   str.Append(num.ToString()); //添加数值num   Response.Write(str.ToString); //显示操做结果

8.避免抛出异常

异常会致使速度变慢,而且使得应用程序页面显示异常,使得没法进行其余操做。可使用 try / catch 使出现的异常记录到日志文件中。

9.使用 finally 方法回收资源

假如你在应用开发中大量使用其余数据库链接和访问文件,请肯定在用完后关闭它们。finally 块是程序中最后被执行,所以在这里面的代码会确保必定会被执行,关闭代码必定要在这个开发方法块中执行。

10.使用客户端脚本验证

用客户端验证代替服务器开发端验证。服务器开发端数据验证将会大量消耗您的服务器开发上的资源,而且会代来大量的页面数据回传。

11.使用 Page.IsPostback

请确保不执行过多的回传代码。使用 Page.IsPostBack 属性,以确保只执行页面初始化逻辑,当一个页面第一次加载,而不向响应客户回发。

12.使用分页

大多数 Web 应用程序数据是以表格形式显示。分页有利用应用开发程序效率。每次尽可能显示小部分数据,这样会加快页面显示速度。

13.使用 Ajax 异步调用

使用 Ajax 方法,进行异步调用。

14.删除未使用的 HttpModules

对于 httpModules,咱们能够理解为:创建一个通用的可用被插入任何 Web 应用程序的 HttpApplication 事件钩子。使用 HttpModule 是可复用的,不须要特定语应用程序代码的,只须要 web.config 中的一个条目。 在 web.config 文件中,删除未使用的 HttpModules。

15.避免递归函数/嵌套循环

在任何编程语言中都需避免嵌套循环和递归函数,以提升性能。

16.不使用没必要要的 Server Control

ASP.NET 中,大量的服务器端控件方便了程序开发,但也可能带来性能的损失,由于用户每操做一次服务器端控件,就产生一次与服务器端的往返过程。所以,非必要,应当少使用 Server Control。

17.调用多个操做时,请使用多线程

问题出现时,单线程卡在此问题上长时间运行。所以,可使用多个线程以提升应用程序的响应速度。

18.数据库的链接和关闭

访问数据库资源须要建立链接、打开链接和关闭链接几个操做。这些过程须要屡次与数据库交换信息以经过身份验证,比较耗费服务器资源。ASP.NET 中提供了链接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库链接放在链接池中,须要时取出,关闭时收回链接,等待下一次的链接请求。链接池的大小是有限的,若是在链接池达到最大限度后仍要求建立链接,必然大大影响性能。所以,在创建数据库链接后只有在真正须要操做时才打开链接,使用完毕后立刻关闭,从而尽可能减小数据库链接打开的时间,避免出现超出链接限制的状况。

19.将 SqlDataReader 类用于快速只进数据游标

SqlDataReader 类提供了一种读取从 SQL Server 数据库检索的只进数据流的方法。若是当建立 ASP.NET 应用程序时出现容许您使用它的状况,则 SqlDataReader 类提供比 DataSet 类更高的性能。状况之因此这样,是由于 SqlDataReader 使用 SQL Server 的本机网络数据传输格式从数据库链接直接读取数据。另外,SqlDataReader 类实现 IEnumerable 接口,该接口也容许您将数据绑定到服务器控件。有关更多信息,请参见 SqlDataReader 类。有关 ASP.NET 如何访问数据的信息,请参见经过 ASP.NET 访问数据。

20.高性能的 SQL 语句规则

  • 尽可能避免全表扫描
  • 尽可能避免在 where 子句中对字段进行 null 值判断
  • 尽可能避免在 where 子句中使用 != 或 <> 操做符
  • 尽可能避免在 where 子句中使用 or 来链接条件
  • in 和 not in 也要慎用
  • 不要在 where 子句中的「=」左边进行函数、算术运算或其余表达式运算
  • Update 语句,若是只更改一、2个字段,不要Update所有字段
  • 对于多张大数据量(这里几百条就算大了)的表JOIN,要先分页再JOIN,不然逻辑读会很高,性能不好
  • 尽量的使用 varchar/nvarchar 代替 char/nchar 更多规则方法请参照:http://database.51cto.com/art/201407/445934.htm

21.缓存

缓存是一种用空间换取时间的技术,通俗点也就是说把你获得的数据存放在内存中一段时间,在这短期内服务器不去读取数据库、或是真实的数据源,而是读取你存放在内存中的数据。 缓存是网站性能优化不可缺乏的一种数据处理机制,他能有效的缓解数据库压力。 ASP.NET 中的缓存主要分为:

  • 页面缓存
  • 数据源缓存
  • 自定义数据缓存

22.作负载均衡和服务器加成

负载均衡不该该仅仅被看做是实现可扩展性的一种手段。尽管它确定提升了可扩展性,不少时候它增长了 Web 应用程序的性能,由于请求和用户都散发着多个服务器。

23.经过 FxCop 作代码检查和优化

FxCop 是一个代码分析工具,它使用基于规则的引擎,来检查出你代码中不合规范的部分;你也能够定制本身的规则加入到这个引擎。其中的一些规则是:

  • 避免过多的局部变量
  • 避免使用未调用的私有代码
  • 避免未实例化的内部类
  • 避免使用未密封的特性
  • 避免进行没必要要的强制转换
  • 之内联方式初始化引用类型的静态字段
  • 用 NeutralResourcesLanguageAttribute 标记程序集
  • 将成员标记为 Static 等等。

24.ASP.NET 性能监控工具

这些是用于监视代码的性能的工具。

  • .NET 内存分析器
  • Red Gate ANTS 性能分析工具
  • Fiddler
  • 性能计数器

结论: 以上是一些性能调整的提示。性能调优不是一天两天的工做,而是一个反反复复的过程。对于网站开发人员来讲,在编写 ASP.NET 应用程序时注意性能问题,养成良好的习惯,提升应用程序性能,至少能够推迟必需的硬件升级,下降网站的成本。

相关文章
相关标签/搜索