ASP.NET 提速20条

翻译 2007年09月19日 17:31:00

当你开发程序的时候有些东西是你应该要考虑的。在12年的asp和asp.net工作中我积累了一

些避免或者使用某些方法来使程序的性能表现明显提升。下面是20条改善asp.net程序性能的

建议:
 1.禁用Session State
  如果你不打算使用Session State 就禁用它,它默认是可用的。你可以在

具体的页面禁用而不是所有页面:


   你也可以通过在web.config 设置<sessionState>为off的方法来关闭

Session State
 2.输出缓冲
  这个方法的最大好处就是可以批量的在服务器上处理你的工作,然后通过

Response.Flush 方法(向客户端发送当前所有缓冲的输出,将当前所有缓冲的输出强制发送

到客户端。在请求处理的过程中可多次调用 Flush)输出数据,这样避免了来回的与服务端

交互
  <%response.buffer=true%>

  Then use:
 
  <%response.flush=true%>
 3.避免服务端验证

 4.Repeater Control Good,  DataList, DataGrid, and DataView controls Bad
  Repeater相当不错
 5.在进行大量操作之前利用HttpResponse.IsClientConnected 带来的好处
  HttpResponse.IsClientConnected(获取一个值,通过该值指示客户端是

否仍连接在服务器上)

 

 if (Response.IsClientConnected)
               
...{
                   
// If still connected, redirect
                   
// to another page. 
                   Response.Redirect("Page2CS.aspx"false);
               }

               
else
               
...{
                   
// If the browser is not connected
                   
// stop all response processing.
                   Response.End();
               }


  6.使用HTTPServerUtility.Transfer 而不是使用 Response.Redirect
  Redirect方法总是与服务端交互,它们应该被使用在服务器间的跳转,对于

任何服务器内的跳转应该使用.transfer!这样你会节省很多不必要的http请求。
 7.使用Validator控件时经常检查Page.IsValid
  确保处理表单之前检查Page.IsValid
 8.在release模式下部署
  在你部署你的网站的时候确保使用的是release编译模式而不是debug编译

模式,Debug模式下生成的程序集为调试版本,未经优化;在bin/debug/目录中有两个文件,

除了要生成的.exe或.dll文件外,还有个.pdb文件,这个.pdb文件中就记录了代码中的断点

等调试信息;Release模式下不包含调试信息,并对代码进行了优化,/bin/release/目录下

只有一个.exe或.dll文件。

 9.关闭Tracing
  Tracing非常棒,虽然如此有人建议过你关闭它吗?如果没有你一定要通过

修改web.config来关闭它,它会给你的程序带来一些额外的开销
               

 <configuration>
                    
<system.web>
                        
<trace enabled="false" pageOutput="false" />
                        
<trace enabled="false" requestLimit="10" 

pageOutput
="false" traceMode="SortByTime" localOnly="true"/>
                        
<compilation debug="false" />
                   
</system.web>
                
</configuration>

 

 10.Page.IsPostBack是你的朋友
  确保不执行不需要执行的代码,我不知道有多少开发人员忘记IsPostBack

,但它对我来说是最基本的
 11.避免异常
 12.Caching 或许是第一号tip!
  Use Quick Page Caching and the ASP.net Cache API!  Lots to learn,

its not as simple as you might think.  There is a lot of strategy involved here. 

When do you cache?  what do you cache?
 13.Create Per-Request Cache
  Use HTTPContect.Items to add single page load to create a per-

request cache.
 14.StringBuilder  
  StringBuilder.Append比String + String要更快。虽然要使用

stringbuilder你必须
  new StringBuilder(),
  因此当字符串不是很多,连接不超过3次你仍然可以坚持使用String +

String,或者可以试试String.Concat
 15.关闭ViewState
If you are not using form postback, turn off viewsate, by default, controls will

turn on viewsate and slow your site.
  如果你不准备postback表单,关闭viewsate, 控件viewsate默认是可用的

,这个会使你的网站变慢

 public ShowOrdersTablePage()
{
    
this.Init += new EventHandler(Page_Init);
}
 
private void Page_Init(object sender, System.EventArgs e)
{
    
this.EnableViewState = false;
}

 

 16.使用分页
  利用.net分页的简便,每次只显示一部分的数据可以加载的更快。只是需

要注意一下缓存,,不要把所有数据都缓存到grid中,试着想一下:如果把在google中搜索

music的所有数据缓存,这些数据将会有多大 ;)
 17.使用AppOffline.htm
  我讨厌asp.net的报错页面,如果我永远看不到这些页面我将会非常高兴。

如果你也不想看到这些页面,使用AppOffline.htm
 18.Use ControlState and not ViewState for Controls
  Detail:http://msdn2.microsoft.com/en-us/library/1whwt1k7.aspx
 

 19.使用finally方法
  如果你与数据库有连接确保在最后关闭它们!Finally 方法正式你所需要

的,因为它是代码执行的唯一的地方

 20.Option Strict and Option Explicit
This is an oldy, and not so much a strictly ASP.net tip, but a .net tip in general.  Make sure you turn BOTH on.  you should never trust .net or any compiler to perform conversions for you.  That's just shady programming, and low quality code anyway.  If you have never turned both on, go turn them on right now and try and compile.  Fix all your errors.

 

There are hundreds more where these came from, however I really feel that these are the most critical of the speed improvements you can make in ASP.net that will have a dramatic impact on the user experience of your application.  As always if you have any suggestions or tips to add, please let us know!  We would love to hear them! 

JAVA连接SQLServer基础,以及5分钟之内读+写20万条数据(40万条操作),遇到的问题

JAVA连接SQLServer基础,以及5分钟之内读+写20万条数据(40万条操作),遇到的问题...
  • zzukun
  • zzukun
  • 2015年02月03日 11:24
  • 2545

提高网站访问速度的34条军规(20-25)

原文:Best Practices for Speeding Up Your Web Site     20 分域部署部件:Split Components Across Domains tag:...
  • xifeijian
  • xifeijian
  • 2013年09月11日 00:17
  • 1999

asp.net 文件批量选取,批量上传,带进度条,uploadify3.2

最近朋友请帮忙写一个批量上传图片的程序,之前在做一个系统的时候由于时间有限没有多研究,这次花了些时间,总算是可以了。 在现实文件上传进度的同时还要将这些数据上传到文件夹或者数据库,所以就需要异步...
  • wangyizhi58
  • wangyizhi58
  • 2013年03月22日 10:54
  • 3806

ASP.NET常用语句1 20条 非常实用

1.//弹出对话框.点击转向指定页面 Response.Write(" window.alert('该会员没有提交申请,请重新提交!') "); Response.Write(&q...
  • mayun0632
  • mayun0632
  • 2011年01月02日 16:58
  • 274

ASP.NET常用语句1--20条

1.//弹出对话框.点击转向指定页面 Response.Write(" window.alert('该会员没有提交申请,请重新提交!') "); Response.Write(" win...
  • weican57
  • weican57
  • 2011年07月18日 23:03
  • 288

20条.net编码习惯

  • 2012年02月15日 15:39
  • 41KB
  • 下载

VS2005没有ASP.NET WEB应用程序及提速安装VS2005补丁

1.先从微软网站下载补丁. 下载地址1为:[url]http://download.microsoft.com/download/6/3/c/63c69e5d- 74c9-48ea-b905-30...
  • Z776988314
  • Z776988314
  • 2011年04月27日 18:19
  • 217

ASP.Net0631防刷票投票系统系统

在积极建立科学管理机制的今天,仅仅靠原始的手工管理或简单的单机管理,管理部门面对大量的信息,无法有效率地将其中的重要部分提取出来,并做出相应的判断和处理。投票管理者的决策只能依据手工表数据,在浪费大量...
  • QQ123311197
  • QQ123311197
  • 2018年01月17日 17:07
  • 39

asp.net上传图片并能实现实时预览

前台aspx:         //下面用于图片上传预览功能         function setImagePreview(avalue) {             document....
  • qq_40182225
  • qq_40182225
  • 2018年01月17日 15:31
  • 25

ASP.NET 登录时保存的Session,在跳转页面后获取不到

昨天晚上加班赶工到今天下午时,一直被一个莫名其妙的问题困恼! 一个后台项目,在登录时获取基础信息保存到指定命名的Session中,登录成功后跳转页面,然后在跳转的页面后台加载Session时,发现获...
  • universe57
  • universe57
  • 2018年01月16日 22:15
  • 8
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET 提速20条
举报原因:
原因补充:

(最多只允许输入30个字)