`
pcajax
  • 浏览: 2195907 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

教你七招提高.NET网站性能

阅读更多

一、减少往返行程(Reduce Round Trips)

使用下面的方法可以减少Web服务器和Browser之间的往返行程:

1、为Browser启用缓存

如果呈现的内容是静态的或变化周期较长,应启用Browser缓存,避免发出冗余的http请求。

2、缓冲页面输出

如果可能,则尽量缓冲页面输出,处理结束后再一次传送到客户端,这可以避免频繁传递小块内容所造成的多次网络交互。由于这种方式在页面处理结束之前客户端无法看到页面内容,因此如果一个页面的尺寸较大的话,可考虑使用Response.Flush方法。该方法强制输出迄今为止在缓冲区中的内容,你应当采用合理的算法控制调用Response.Flush方法的次数。

3、使用Server.Transfer重定向请求

使用Server.Transfer方法重定向请求优于Response.Redirect方法。原因是Response.Redirect会向Broswer回送一个响应头,在响应头中指出重定向的URL,之后Brower使用新的URL重新发出请求。而Server.Transfer方法直接是一个简单的服务端调用,完全没有这些开销!

需要注意Server.Transfer有局限性:第一,它会跳过安全检查;第二,只适用于在同一Web应用内的页面间跳转。

二、避免阻塞和长时间的作业

如果需要运行阻塞或长时间运行的操作,可以考虑使用异步调用的机制,以便Web服务器能够继续处理其它的请求。

1、使用异步方式调用Web服务和远程对象

只要有可能就要避免在请求的处理过程中对Web服务和远程对象的同步调用,因为它占用的是的ASP.NET 线程池中的工作线程,这将直接影响Web服务器响应其它请求的能力。

2、考虑给不需要返回值的Web方法或远程对象的方法添加OneWay属性

这种模式能让Web Server调用之后就立即返回。可根据实际情况决定是否使用这种方法。

3、使用工作队列

将作业提交到服务器上的工作队列中。客户端通过发送请求来轮询作业的执行结果。

三、使用缓存

缓存能在很大程度上决定ASP.NET应用的最终性能。Asp.net支持页面输出缓存和页面部分缓存,并提供Cache API,供应用程序缓存自己的数据。是否使用缓存可考虑下面的要点:

1、识别创建与访问代价较大的数据

2、评估需要缓存数据的易变性

3、评估数据的使用频次

4、 将要缓存数据中易变数据和不变数据分离,只缓存不变数据

5、选择合适的缓存机制(除Asp.net Cache外,Application state和Session state也可以作为缓存使用)

四、多线程

1、避免在请求处理过程中创建线程

在执行请求的过程中创建线程是一种代价较大的操作,会严重影响Web Server的性能。如果后续的操作必须用线程完成,建议通过thread pool来创建/管理线程。

2、不要依赖线程数据槽或线程静态变量

由于执行请求的线程是ASP.NET thread pool中的工作线程,同一个Client的两次请求不一定由相同的线程来处理。

3、避免阻塞处理请求的线程

4、避免异步调用

这和1的情况类似。异步调用会导致创建新的线程,增加服务器的负担。所以,如果没有并发的作业要执行,就不要执行异步调用。

五、系统资源

1、考虑实现资源池以提升性能

2、明确地调用Dispose或Close释放系统资源

3、不要缓存或长时间占用资源池中的资源

4、尽可能晚的申请,尽可能早的释放

六、页面处理

1、尽量减小Page的尺寸

包括缩短控件的名称、CSS的class的名称、去掉无谓空行和空格、禁用不需要的ViewState

2、启用页面输出的缓冲区(Buffer)

如果Buffer的机制被关闭,可以用下面的方法打开。

使用程序打开页面输出缓存:

Response.BufferOutput = true;

使用@Page开关打开页面输出缓冲机制:

使用Web.config或Machine.config配置文件的 节点:

3、利用Page.IsPostBack优化页面输出

4、通过分离页面的不同的内容,来提高缓存效率和减少呈现的时间

5、优化复杂和代价较大的循环

6、合理利用客户端的计算资源,将一些操作转移到客户端进行

七、ViewState

ViewState是Asp.net为服务端控件在页面回传之间跟踪状态信息而设计的一种机制。

1. 关闭ViewState

如果不需要跟踪页面状态,例如页面不会 回传(PostBack)、不需要处理服务端控件事件或者每次页面刷新时都会重新计算控件内容,那么就不需要用ViewState来记录页面状态了。可以对特定的WebControl设置EnableViewState属性,也可以在页面一级设置:

2、在恰当的时间点初始化控件属性

ASP.NET的控件在执行构造函数、初始化的期间设置的属性不会被跟踪变化;而在初始化阶段之后对属性的修改都会被跟踪,并最终记录到IE页面的__VIEWSTATE之中。所以,选择合理的初始化控件属性的执行点,能有效的减小页面尺寸。

3、谨慎选择放到ViewState中的内容

放到ViewState中的内容会被序列化/反序列化,Asp.net为String、Integer、Boolean等基本类型的序列化做了优化,如果Array、ArrayList、HashTable存储的是基本类型效率也较高,但其它类型则需要提供类型转换器(Type Converter),否则将使用代价昂贵的二进制序列化程序。

总结:光有了这些技术方法还不够,还需要将这些方法根据你网站的情况灵活运用,适时调整方法,集中解决重要问题,这有这样网站性能才能得到大幅度的优化。

分享到:
评论

相关推荐

    ASP.NET数据库网站设计教程

    ASP.NET数据库网站设计教程是一门深入讲解如何使用ASP.NET技术构建与数据库交互的web应用程序的课程。这门教程包括了理论知识的...通过理论学习与实践操作相结合,你可以有效地掌握ASP.NET数据库网站设计的核心技术。

    教你如何给C#.NET程序打包1

    教你如何给C#.NET程序打包1教你如何给C#.NET程序打包1教你如何给C#.NET程序打包1教你如何给C#.NET程序打包1教你如何给C#.NET程序打包1教你如何给C#.NET程序打包1教你如何给C#.NET程序打包1教你如何给C#.NET程序打包1

    《构建高性能可扩展ASP.NET网站》源码

    此为《构建高性能可扩展ASP.NET网站》一书的源码 让ASP.NET + SQL Server网站飞 迅速提升网站性能,全面挖掘网站潜力 微软资深技术专家力作,亚马逊全五星评价 本书针对ASP.NET 网站开发中可能遇到的问题,给出了...

    构建高性能可扩展ASP.NET网站 (中文版) part2

    《构建高性能可扩展ASP.NET网站》针对ASP.NET网站开发中可能遇到的问题,给出了经过实践检验的具体解决方法。涉及的内容包括:加快显示HTML的方法、缓存的最佳方式、如何使用IIS、如何处理会话状态、如何配置SQL ...

    ASP.NET Core 3.1中文教程.pdf

    * ASP.NET Core 的未来发展方向将集中于提高性能、完善功能和扩展生态系统。 * ASP.NET Core 的社区将继续增长和壮大,提供更多的支持和资源。 * ASP.NET Core 的应用场景将继续扩展,涵盖更多的行业和领域。 ASP...

    大学专用智能评教系统源代码ASP.NET

    【标题】"大学专用智能评教系统源代码ASP.NET"是一个专门为高等教育机构设计的在线教学质量评估平台的源代码实现。该系统基于ASP.NET技术,它提供了便捷、高效且智能化的评教功能,旨在帮助大学改进教学质量,提升...

    构建高性能可扩展ASP.NET网站PDF与源码(修正PDF)

    2. **缓存策略**:利用ASP.NET的缓存机制可以显著提高网站性能,包括页面级缓存、数据缓存和输出缓存。正确配置缓存策略可以减少数据库访问,降低服务器负载。 3. **异步编程**:ASP.NET支持异步操作,如异步控制器...

    构建高性能可扩展ASP.NET网站.part1

    构建高性能可扩展ASP.NET网站.part1 构建高性能可扩展ASP.NET网站.part2

    8个ASP.NET网站简单例子

    通过深入研究这些ASP.NET网站的源代码,你可以逐步掌握ASP.NET的核心概念和技术,提高自己的开发能力。每个例子都是一个独立的学习点,将它们结合在一起,你就能够构建出功能完善的Web应用。在实践中不断探索和学习...

    Visual C++.NET入门与提高实用教程

    Visual C++.NET入门与提高实用教程

    你必须知道的.net第二版

    根据提供的标题“你必须知道的.NET第二版”以及描述中的信息来看,这应该是一本关于.NET框架或.NET Core平台的详细介绍和技术指南书籍。虽然提供的部分内容并没有包含实际的技术信息,但我们可以基于标题和描述来...

    asp.net网站模板

    ASP.NET是微软公司推出的用于构建动态网站、Web应用程序和Web服务的框架,它基于.NET Framework,提供了丰富的功能和强大的性能。 在提供的压缩包文件中,我们可以看到多个关键的文件,这些文件构成了ASP.NET网站的...

    ASP.NET教程全集

    ASP.NET是微软公司开发的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了强大且易用的工具,使得创建动态网站、Web应用程序和Web服务变得更加简单。本教程全集将带你深入理解和掌握ASP.NET的...

    Asp.Net MVC案例教程

    最后,Asp.Net MVC还集成了AJAX支持,使你可以创建部分页面更新的应用,提高用户体验。通过jQuery和Ajax.BeginForm等方法,可以实现异步请求,而无需刷新整个页面。 综上所述,Asp.Net MVC教程的案例涵盖了模型-...

    .net core 高性能开发

    《.NET Core 高性能开发》一书深入探讨了如何在Windows、Mac和Linux系统上充分利用.NET Core框架实现高性能的应用程序。.NET Core是微软推出的一款开源、跨平台的开发框架,它为开发者提供了构建高性能、云就绪应用...

    构建高性能可扩展ASP.NET网站 (中文版) part1

    《构建高性能可扩展ASP.NET网站》针对ASP.NET网站开发中可能遇到的问题,给出了经过实践检验的具体解决方法。涉及的内容包括:加快显示HTML的方法、缓存的最佳方式、如何使用IIS、如何处理会话状态、如何配置SQL ...

    asp.net网站后台模板

    asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板

    VB.Net 应用教程

    VB.Net 应用教程.chm

    完全手册:ASP.net.Ajax电子教程

    - **Partial Page Rendering**:ASP.NET AJAX实现了部分页面渲染,减少了页面重绘的开销,提高了用户体验。 - **Web Services和Page Methods**:为了支持AJAX调用,ASP.NET提供了Web Services和Page Methods两种...

    Web程序设计——ASP.NET网站开发

    编译式模型使得ASP.NET应用在运行前就被编译为高效的机器代码,提高了性能。事件驱动编程模式简化了网页交互逻辑,而丰富的服务器控件则极大地丰富了用户界面的设计和实现。 在ASP.NET中,网站和应用程序的结构通常...

Global site tag (gtag.js) - Google Analytics