提高 ASP.NET Web 应用性能的 24 种方法和技巧
那性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点。
1.debug=「false」
当创建 ASP.NET Web应用程序,默认设置为「true」。开发过程中,设置为「true」是非常有用多,但在应用程序发布部署时,需将其设置为「false」。
<compilation defaultLanguage="C#" debug="false" targetFramework="4.0" />
2.关闭 tracing(追踪)
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.使用发布版本部署应用
部署应用程序到生产环境时,要确保使用的发布版本模式,而不是调试模式。如果使用调试模板极容易发生请求超时。部署成发布版本,你将会发现速度有很大的提升。
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 语句,如果只更改1、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
- 性能计数器
转载:http://geek.csdn.net/news/detail/52589
转载于:https://www.cnblogs.com/xy0710/p/5172858.html
提高 ASP.NET Web 应用性能的 24 种方法和技巧相关推荐
- .NET开发人员必看:提高ASP.NET Web应用性能的24种方法和技巧——转
性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置为 ...
- Asp.net性能优化-提高ASP.Net应用程序性能的十大方法
一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的 ...
- 提高ASP.NET应用程序性能的几招方法
以下经验总结自,并且经过验证 1,不参与POSTBACK机制的控件,不要用服务器控件,尽量用静态HTML标记 2,编译时使用RELEASE配置 3,正式投入应用时,记着将DEBUG设为FALSE 4, ...
- 8种提升ASP.NET Web API性能的方法
英文原文:8 ways to improve ASP.NET Web API performance ASP.NET Web API 是非常棒的技术.编写 Web API 十分容易,以致于很多开发者没 ...
- 提升PHP性能的21种方法
提升PHP性能的21种方法. 1.用单引号来包含字符串要比双引号来包含字符串更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会. 2.如果能将类的方法定义成static,就尽量定义成s ...
- 测试显卡性能的两种方法
测试显卡性能的两种方法: 方法一:利用软件包unixbench-5.1.2 用unixbench-5.1.2,需要网上下载相关源码包,并提前需要修改Makefile: GL_LIBS = -lGL - ...
- 提高DB2数据库Web程序性能的两条规则
速度和可升级性是网络开发重要的性能要求,而且它们也不难达到.应用一些简单的规则会提高网络应用的性能.在本文中,您将了解到使用Borland C#Builder和IBM DB2通用数据库(UDB)8.1 ...
- 使用Jil序列化JSON提升Asp.net web api 性能
JSON序列化无疑是Asp.net web api 里面性能提升最重要的一环. 在Asp.net web api 里面我们可以插入自定义的MediaTypeFormatter(媒体格式化器), 说白了 ...
- 使用CSS提高网站性能的30种方法
根据httparchive.org的页面重量报告,CSS在平均70个请求和2MB的网页上占7个HTTP请求和70Kb的代码.这并不是网站性能糟糕的最坏原因(我正看着你呢,JavaScript),但CS ...
最新文章
- (转)iOS开发资源:推送通知相关开源项目--PushSharp、APNS-PHP以及Pyapns等
- 真的有能开光追的手游了!自带实机演示的那种,OPPO这次玩“大”了
- linux进程同步问题,关于LINUX下进程和线程对文件的同步问题,请高手来看看!!!...
- Java设计模式-代理模式 理论代码相结合
- Opportunity的chance of success的赋值逻辑
- 【HDU - 4006】The kth great number (优先队列,求第k大的数)
- [NVIDIA] Ubuntu 16.04 安装 nvidia-384 + cuda-9.0
- 结构体07:结构体案例1
- Atitit sql注入的防范 目录 1.1. 检查数据类型 1 2. 有限操作DML 1 2.1. 限制执行函数黑名单机制 2 2.2. 限制执行系统sp 2 2.3. 限制数据查询语句类型,只能
- java 省市县数据_Jsoup获取全国地区数据(省市县镇村)
- 服务端(java)实现微信支付二次签名
- 判断四张扑克牌能否凑成24点游戏算法
- C语言刷题6:给定b的值,输入a和m,求a*b和a^m的值
- Why、When的疑问代词_22
- Pytorch实现Deep Mutual Learning网络
- 苹果电脑MACbook Air快捷键大全
- tinyint(1)和int(1)的区别
- Mybatis中复杂语句标签的简单初步使用
- [附源码]Java计算机毕业设计SSM潮购购物网站
- java中兴参与实参相同_java错题集