惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
aimingoo的专栏
aimingoo的专栏
I
InfoQ
C
Check Point Blog
IT之家
IT之家
MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
Last Week in AI
Last Week in AI
GbyAI
GbyAI
P
Proofpoint News Feed
量子位
Stack Overflow Blog
Stack Overflow Blog
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
B
Blog
T
The Blog of Author Tim Ferriss
H
Help Net Security
云风的 BLOG
云风的 BLOG

博客园 - 风的传说

使用Entity Framework时要注意的一些性能问题 UML类图 软件项目的需求分析 MVC Models定义验证属性 entity framework进行一对多的联合查询 Entity Framework 批量删除 WPF 事件快速参考 [导入]非常不错的WCF入门文章,来自Artech [导入]Microsoft Expression Studio 2 简体中文正式版 [导入]C#开源持久层框架 [导入]Sql Server2005简单分页 [导入]提高C#编程水平的50个要点 [导入]New ASP.NET Charting Control: <asp:chart runat="server"/> [导入]asp.net 里的HttpHandler隐藏图片 [导入]c# oop思想 [导入]Pro ASP.NET 3.5 in C# 2008 [导入].Net3.5扩展方法实现对象JSON序列化 [导入]26句实用的英语 [导入]微软将 jQuery IntelliSense整合到Visual Studio [导入]08年最流行的十大SaaS术语 [导入]asp.net(c#)怎样将图片存入数据库? [导入]linq与xml
增加asp.net应用程序性能的19种方法 - 风的传说 - 博客园
风的传说 · 2011-01-08 · via 博客园 - 风的传说

1.禁用session
假如您用不到session会话跟踪请务必禁用它。您可以在每个asp.net页面中设置如下:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm1"

EnableSessionState="false" %>

当然您可以在web.config应用程序配置设置中设计<sessionState>mode的值为Off.

2.输出缓冲设置
这个方法对你的应用很有帮助.
asp.net应用程序基本上在服务器端批量生成数据,这时必须设置Response.Flush清空缓冲区。这样会减轻服务器端的缓冲区压力。

<%response.buffer=true%>
替换成
<%response.flush=true%>

3.避免服务器端验证.
用客户端验证代替服务器端验证.服务器端数据验证将会大量消耗您的服务器

上的资源,并且会代来大量的页面数据回传.

4.尽量多使用Repater控件,而不要使用DataList, DataGrid, 和 DataView 控件

Asp.net是一个非常好的平台,不幸的是,有很多控件会大量生成html代码,这

样务必会造成性能上的问题.Asp.net repeater 控件非常好用。使用它你将会

额外多写一些代码,但是将来您会发现它带来的好处远比多写代码带来的麻烦。

5.在执行大动作操作时请使用 HttpResponse.IsClientConnected
if (Response.IsClientConnected)
{
// If still connected, redirect
// to another page.
Response.Redirect("Page2CS.aspx", false);
}
Response.Redirect有什么错误吗,请继续答案在下面

6.使用HTTPServerUtility.Transfer去替换Response.Redirect.
Redirect(重定向)非常麻烦,它仅用于用于从当前物理服务器跳转到其它服务

器.如果只是在本服务器内页面跳转请使用transfer(转发),这样会减少很多没

有必要的客户端请求.

7.当使用服务器端验证时请务必使用Page.IsValid检查页面是否能过验证
由于您使用了验证控件,你可能认为asp.net会为处理以下的所有事情,是这样吗?

错!当有无效数据传到服务器端时IsVlid属性被改为fasle.在继续处理您的表单之前请检查Page.IsValid属性

8.部署应用程序请使用Release版本
在部署应用程序时请确定您的应用程序应是Release版本而不是Debug版本.假如您认为这无关仅要,你就错了。

如果使用debug模板极容易发生请求超时。部署成Release版本,你将会发现速度有很大的提升.

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)
使用页面快速设置页页Caching和使用ASP.net缓冲API!

有很多东西要学,这个可不是你想像中那么简单.这个有很多策略要采用.什么时候使用缓冲?你使用缓存了吗?

13.设置每一次请求缓存
使用HTTPContect.Items仅要添加一个页面用来设置每一个请求缓存.

14.StringBuilder类的使用
StringBuilder.Append 的速要比String + String速度快的多。

假如您连接的字符串较上可以不使用,当连接次数大于3次上建议使用StringBuilder.Append方法,当然也可以使用String.Concat

15.关闭ViewState
假如你没有使用表单数据回传,那么关闭viewsate。控件回自动打开viewstate这样回减慢你应用程序速度.

public ShowOrdersTablePage()
{
this.Init += new EventHandler(Page_Init);
}

private void Page_Init(object sender, System.EventArgs e)
{
this.EnableViewState = false;
}

16.使用分页
.net应用程序分页有利用应用程序效率.每次尽量显示小部分数据,这样会加快页面显示速度。请小心使用混合缓存,请不要设置所有数据在缓存区中。

17.当更新应用程序时使用AppOffline.htm
我非常讨厌asp.net默认错误消息.我是那么的开心假如我再也看不到那些错误消息.确定您的用户也不要看到它.使用AppOffline.htm去替代它。

18.控件使用ControlState而不使用ViewState

19.使用finally方法回收资源
假如你在应用中大量使用数据库连接和访问文件,请确定在用完后关闭它们.

finally块是程序中最后被执行,因此在这里面的代码会确宝一定会被执行,关闭代码一定要在这个方法块中执行