如何对ASP.NET进行性能优化

优化N步曲 1)优化程序结构,减少不必要的数据查询。 2)使用cache 3)使用ajax减少传输负担。 4)能静态化的就静态化(减少数据库服务器压力)。或使用memcached 5)使用镜像加速(CDN) 6)数据库与网页分开在不同的服务器上

ASP.NET网站性能优化 需要考虑哪些方面

比如 1 数据库,数据量大,比如建立索引等等,优化数据库

2 有图片的页面,把图片压缩

3 尽量少用服务器控件,服务器控件要编译成html控件,导致速度不如纯html控件

4 代码,减少冗余的代码,减少重复性的代码,包括查询数据语句等等,可使用存储过程

5 分布式部署等等

还有很多,包括服务器的好坏呀等等

ASP.NET中常用的优化性能方法有哪些?

个人觉得优点是 1.界面和逻辑分离 2.编写调试简单,东西很易用。 网上找的观点 以前的 Web 开发模型相比,ASP.NET 提供了数个重要的优点: 增强的性能。ASP.NET 是在服务器上运行的编译好的公共语言运行库代码。与被解释的前辈不同,ASP.NET 可利用早期绑定、实时编译、本机优化和盒外缓存服务。这相当于在编写代码行之前便显著提高了性能。 世界级的工具支持。ASP.NET 框架补充了 Visual Studio 集成开发环 境中的大量工具箱和设计器。WYSIWYG 编辑、拖放服务器控件和自动部署只是这个强大的工具所提供功能中的少数几种。 威力和灵活性。由于 ASP.NET 基于公共语言运行库,因此 Web 应用程序开发人员可以利用整个平台的威力和灵活性。.NET 框架类库、消息处理和数据访问解决方案都可从 Web 无缝访问。ASP.NET 也与语言无关,所以可以选择最适合应用程序的语言,或跨多种语言分割应用程序。另外,公共语言运行库的交互性保证在迁移到 ASP.NET 时保留基于 COM 的开发中的现有投资。 简易性。ASP.NET 使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署和站点配置。例如,ASP.NET 页框架使您可以生成将应用程序逻辑与表示代码清楚分开的用户界面,和在类似 Visual Basic 的简单窗体处理模型中处理事件。另外,公共语言运行库利用托管代码服务(如自动引用计数和垃圾回收)简化了开发。 可管理性。ASP.NET 采用基于文本的分层配置系统,简化了将设置应用于服务器环境和 Web 应用程序。由于配置信息是以纯文本形式存储的,因此可以在没有本地管理工具帮助的情况下应用新设置。此"零本地管理"哲学也扩展到了 ASP.NET 框架应用程序的部署。只需将必要的文件复制到服务器,即可将 ASP.NET 框架应用程序部署到服务器。不需要重新启动服务器,即使是在部署或替换运行的编译代码时。 可缩放性和可用性。ASP.NET 在设计时考虑了可缩放性,增加了专门用于在聚集环境和多处理器环境中提高性能的功能。另外,进程受到 ASP.NET 运行库的密切监视和管理,以便当进程行为不正常(泄漏、死锁)时,可就地创建新进程,以帮助保持应用程序始终可用于处理请求。 自定义性和扩展性。ASP.NET 随附了一个设计周到的结构,它使开发人员可以在适当的级别"插入"代码。实际上,可以用自己编写的自定义组件扩展或替换 ASP.NET 运行库的任何子组件。实现自定义身份验证或状态服务一直没有变得更容易。参考资料:

ASP.NET中常用的优化性能方法都有哪些?

1)避免使用ArrayList。

因为任何对象添加到ArrayList都要封箱为System.Object类型,从ArrayList取出数据时,要拆箱回实际的类型。建议使用自定义的集合类型代替ArrayList。.net 2.0提供了一个新的类型,叫泛型,这是一个强类型,使用泛型集合就可以避免了封箱和拆箱的发生,提高了性能。

2)使用HashTale代替其他字典集合类型(如StringDictionary,NameValueCollection,HybridCollection),存放少量数据的时候可以使用HashTable.

3)为字符串容器声明常量,不要直接把字符封装在双引号" "里面。

//避免

//

MyObject obj = new MyObject();

obj.Status = "ACTIVE";

//推荐

const string C_STATUS = "ACTIVE";

MyObject obj = new MyObject();

obj.Status = C_STATUS;

4) 不要用UpperCase,Lowercase转换字符串进行比较,用String.Compare代替,它可以忽略大小写进行比较.

例:

const string C_VALUE = "COMPARE";

if (String.Compare(sVariable, C_VALUE, true) == 0)

{

Console.Write("SAME");

}

5) 用StringBuilder代替使用字符串连接符 “+”,.

//避免

String sXML = "parent";

sXML += "child";

sXML += "Data";

sXML += "/child";

sXML += "/parent";

//推荐

StringBuilder sbXML = new StringBuilder();

sbXML.Append("parent");

sbXML.Append("child");

sbXML.Append("Data");

sbXML.Append("/child");

sbXML.Append("/parent");

6) If you are only reading from the XML object, avoid using XMLDocumentt, instead use XPathDocument, which is readonly and so improves performance.

如果只是从XML对象读取数据,用只读的XPathDocument代替XMLDocument,可以提高性能

//避免

XmlDocument xmld = new XmlDocument();

xmld.LoadXml(sXML);

txtName.Text = xmld.SelectSingleNode("/packet/child").InnerText;

.

//推荐

XPathDocument xmldContext = new XPathDocument(new StringReader(oContext.Value));

XPathNavigator xnav = xmldContext.CreateNavigator();

XPathNodeIterator xpNodeIter = xnav.Select("packet/child");

iCount = xpNodeIter.Count;

xpNodeIter = xnav.SelectDescendants(XPathNodeType.Element, false);

while(xpNodeIter.MoveNext())

{

sCurrValues += xpNodeIter.Current.Value+"~";

}

7) 避免在循环体里声明变量,应该在循环体外声明变量,在循环体里初始化。

//避免

for(int i=0; i10; i++)

{

SomeClass objSC = new SomeClass();

.

.

.

}

//推荐

SomeClass objSC = null;

for(int i=0; i10; i++)

{

objSC = new SomeClass();

.

.

.

}

8) 捕获指定的异常,不要使用通用的System.Exception.

//避免

try

{

some logic

}

catch(Exception exc)

{

Error handling

}

//推荐

try

{

some logic

}

catch(System.NullReferenceException exc)

{

Error handling

}

catch(System.ArgumentOutOfRangeException exc)

{

Error handling

}

catch(System.InvalidCastException exc)

{

Error handling

}

9) 使用Try...catch...finally时, 要在finally里释放占用的资源如连接,文件流等

不然在Catch到错误后占用的资源不能释放。

try

{

...

}

catch

{...}

finally

{

conntion.close()

}

10) 避免使用递归调用和嵌套循环,使用他们会严重影响性能,在不得不用的时候才使用。

11) 使用适当的Caching策略来提高性能

asp.net网站源代码怎么优化

1.尽量的精简代码,删除无用的代码和样式,特别是首页代码不能太多,否则影响加载速度,对搜索引擎而言是极不友好的;

2.代码中尽量不要使用flash、js,禁止使用框架;

3.网页地址尽量静态化,少使用动态化网址。

代码可以优化的地方基本上就是这些,其它SEO方面需要SEO的专员去做。

哪些方面可以对asp.net进行性能优化

1、使用值类型的ToString方法

在连接字符串时,经常使用"+"号直接将数字添加到字符串中。这种方法虽然简单,也可以得到正确结果,但是由于涉及到不同的数据类型,数字需要通过装箱操作转化为引用类型才可以添加到字符串中。但是装箱操作对性能影响较大,因为在进行这类处理时,将在托管堆中分配一个新的对象,原有的值复制到新创建的对象中。

使用值类型的ToString方法可以避免装箱操作,从而提高应用程序性能。

int num=1;

string str="go"+num.ToString();

2、运用StringBuilder类

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); //显示操作结果

3、使用 HttpServerUtility.Transfer 方法在同一应用程序的页面间重定向

采用 Server.Transfer 语法,在页面中使用该方法可避免不必要的客户端重定向(Response.Redirect)。

4、避免使用ArrayList。

因为任何对象添加到ArrayList都要封箱为System.Object类型,从ArrayList取出数据时,要拆箱回实际的类型。建议使用自定义的集合类型代替ArrayList。asp.net 2.0提供了一个新的类型,叫泛型,这是一个强类型,使用泛型集合就可以避免了封箱和拆箱的发生,提高了性能。

5、使用HashTale代替其他字典集合类型

(如StringDictionary,NameValueCollection,HybridCollection),存放少量数据的时候可以使用HashTable.

6、为字符串容器声明常量,不要直接把字符封装在双引号" "里面。

//避免

MyObject obj = new MyObject();

obj.Status = "ACTIVE";

//推荐

const string C_STATUS = "ACTIVE";

MyObject obj = new MyObject();

obj.Status = C_STATUS;

7、不要用ToUpper(),ToLower()转换字符串进行比较,用String.Compare代替,它可以忽略大小写进行比较.

例:

const string C_VALUE = "COMPARE";

if (String.Compare(sVariable, C_VALUE, true) == 0)

{

Console.Write( "相同");

}

也可以用str == String.Empty或者str.Length == 0判断是否为空。(注意判断输入数据的长度,可防止sql注入式攻击)

将String对象的Length属性与0比较是最快的方法,避免不必要的调用 ToUpper 或 ToLower 方法。

8、类型转化Int32.TryParse()优于Int32.Parse()优于Convert.ToInt32()。

建议.NET1.1下用Int32.Parse();.NET2.0用Int32.TryParse()。

因为:

Convert.ToInt32 会把最终的解析工作代理给 Int32.Parse;

Int32.Parse 会把最终的解析工作代理给Number.ParseInt32;

Int32.TryParse 会把最终的解析工作代理给Number.TryParseInt32。

9、如果只是从XML对象读取数据,用只读的XPathDocument代替XMLDocument,可以提高性能

//避免

XmlDocument xmld = new XmlDocument();

xmld.LoadXml(sXML);

txtName.Text = xmld.SelectSingleNode( "/packet/child").InnerText;

//推荐

XPathDocument xmldContext = new XPathDocument(new StringReader(oContext.Value));

XPathNavigator xnav = xmldContext.CreateNavigator();

XPathNodeIterator xpNodeIter = xnav.Select( "packet/child");

iCount = xpNodeIter.Count;

xpNodeIter = xnav.SelectDescendants(XPathNodeType.Element, false);

while(xpNodeIter.MoveNext())

{

sCurrValues += xpNodeIter.Current.Value+ ",";

}