提高 ASP.NET Web 应用性能的 24 种方法和技巧

本文介绍了23个提高ASP.NET Web应用性能的方法,包括关闭调试、禁用无用功能、使用客户端验证、合理管理数据库连接等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这篇文章中,将介绍一些提高 ASP.NET Web 应用性能的方法和技巧。众所周知,解决性能问题是一项繁琐的工作,当出现性能问题,每个人都会归咎于编写代码的开发人员。

以下为译文

图片描述

那性能问题到底该如何解决?以下是应用系统发布前,作为 .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
  • 性能计数器

结论: 以上是一些性能调整的提示。性能调优不是一天两天的工作,而是一个反反复复的过程。对于网站开发人员来说,在编写 ASP.NET 应用程序时注意性能问题,养成良好的习惯,提高应用程序性能,至少可以推迟必需的硬件升级,降低网站的成本。(文:OneAPM工程师 责编/仲浩))

Asp.net销售管理系统源码 第1章 系统登录 系统登录模块主要用于验证用户登录系统时输入的用户名、密码验证码是否正确,只有合法的用户才可以 进入系统,否则将不能进入此系统,系统登录页面如图1.1所示。 图1.1 登录页面 在用户名处输入“admin”,密码为“51aspx”,并输入正确的验证码,单击“确定”按钮,进入网页首页,如图 1.2所示。 图1.2 首页 第2章 基本信息 基本信息主要包括:添加公司信息、添加商品信息、公司信息管理、商品信息管理。 2.1 添加公司信息 在功能导航区中单击“添加公司信息”按钮,在操作区会显示添加页面,如图2.1所示。此页面主要用于添加 供应商及客户信息。在“所属类型”下拉列表中选择公司的所属类型,单击“添加”按钮,完成添加操作。 图2.1 添加公司信息 2.2 添加商品信息 在功能导航区中单击“添加公司信息”按钮,在操作区中会显示添加页面。添加商品信息页面的运行效果如图 2.2所示。此页面的操作方法请参见2.1节的添加公司信息。 说明:供应商下拉列表中的信息是公司的所属类型为供应商的公司信息。 图2.2 添加商品信息 2.3 公司信息管理 在功能导航区中单击“公司信息管理”按钮,在操作区中会显示公司信息的管理页面。如图2.3所示。此页面 主要实现修改及删除公司信息等功能。 图2.3 公司信息管理 公司信息管理的操作方法如下: (1)修改。单击“详细信息”按钮,弹出“修改公司信息”页面,如图2.4所示。可直接在编辑框中修改信息, 信息修改完成后单击“修改”按钮,完成修改操作。 图2.4 修改公司信息 (2)删除。直接单击“删除”按钮,即可将该公司数据信息进行删除。 2.4 商品信息管理 在功能导航区中单击“商品信息管理”按钮,在操作区中会显示商品信息的管理页面。如图2.4所示。此页面 主要实现修改及删除商品信息等功能。操作方法请参见2.3节的公司信息管理。 图2.4 修改商品信息 第3章 进货管理 进货管理主要包括:添加进货信息、添加进货退货。 3.1 添加进货信息 在功能导航区中单击“添加进货信息”按钮,在操作区中会显示添加进货信息页面。如图3.1所示。在“商品名 称”下拉列表中选择进货商品名称,“供应商”自动显示该商品的供应商名称,在其余编辑框中输入完整的进 货信息,然后单击“添加”按钮,完成添加操作。 图3.1 添加进货信息 3.2 添加进货退货 在功能导航区中单击“添加进货退货”按钮,在操作区中会显示进货退货页面。如图3.2所示。此页面的操作 方法请参见3.1节的添加进货信息。 图3.2 添加进货退货 第4章 销售管理 销售管理主要包括:添加销售信息、添加销售退货。 4.1 添加销售信息 在功能导航区中单击“添加销售信息”按钮,在操作区中会显示添加商品销售信息页面。添加销售信息页面如 图4.1所示。此页面主要是用于添加商品销售的详细信息。操作方法请参见3.1节的添加进货信息。 图4.1 添加销售信息 4.2 添加销售退货 在功能导航区中单击“添加销售退货”按钮,在操作区中会显示添加销售退货页面。如图4.2所示。此页面主 要是用于添加销售退货的详细信息。操作方法请参见3.2节的添加进货退货。 图4.2 添加销售退货 第5章 查询统计 查询统计主要包括:商品进货查询、进货退货查询、商品销售查询、销售退货查询、商品库存查询、商品销 售排行。其中商品进货查询、进货退货查询、商品销售查询、销售退货查询、商品库存查询的操作方法相同 ,下面以“商品进货查询”为例讲解其操作方法。 5.1 商品进货查询 在功能导航区中单击“商品进货查询”按钮,同时操作区中会显示商品进货查询的页面,如图5.1所示。商品 进货查询主要是对商品进货的详细信息进行查询,可根据供应商、商品名称、经手人起止日期进行复合条 件查询。此查询支持模糊查询。 在四个查询条件中任选一个或多个条件,分别勾选其复选框,在编辑框中填写查询条件,单击“查询”按钮, 完成查询操作。 单击“详细信息”按钮,可查看该条进货信息。 图5.1 商品进货查询页面 5.2 商品销售排行 在功能导航区中单击“商品销售排行”,在操作区中会显示商品销售排行查询页面,如图5.2所示。商品销售 排行主要是根据商品的销售量把商品按照降序排列。 图5.2 商品销售排行页面 第6章 往来管理 往来管理主要包括:商品进货结账、进货退货结账、商品销售结账、销售退货结账。这个页面的操作方法相 同,下面以“商品进货结账”为例讲解其操作方法。 6.1 商品进货结账 在功能导航区中单击“商品进货结账”,在操作区中会显示商品进货结账
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值