- 浏览: 2195907 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (1878)
- [网站分类]ASP.NET (141)
- [网站分类]C# (80)
- [随笔分类]NET知识库 (80)
- [随笔分类]摘抄文字[非技术] (3)
- [随笔分类]养生保健 (4)
- [网站分类]读书区 (16)
- [随笔分类]赚钱 (7)
- [网站分类].NET新手区 (233)
- [随笔分类]网站 (75)
- [网站分类]企业信息化其他 (4)
- [网站分类]首页候选区 (34)
- [网站分类]转载区 (12)
- [网站分类]SQL Server (16)
- [网站分类]程序人生 (7)
- [网站分类]WinForm (2)
- [随笔分类]错误集 (12)
- [网站分类]JavaScript (3)
- [随笔分类]小说九鼎记 (69)
- [随笔分类]技术文章 (15)
- [网站分类]求职面试 (3)
- [网站分类]其他技术区 (6)
- [网站分类]非技术区 (10)
- [发布至博客园首页] (5)
- [网站分类]jQuery (6)
- [网站分类].NET精华区 (6)
- [网站分类]Html/Css (10)
- [随笔分类]加速及SEO (10)
- [网站分类]Google开发 (4)
- [随笔分类]旅游备注 (2)
- [网站分类]架构设计 (3)
- [网站分类]Linux (23)
- [随笔分类]重要注册 (3)
- [随笔分类]Linux+PHP (10)
- [网站分类]PHP (11)
- [网站分类]VS2010 (2)
- [网站分类]CLR (1)
- [网站分类]C++ (1)
- [网站分类]ASP.NET MVC (2)
- [网站分类]项目与团队管理 (1)
- [随笔分类]个人总结 (1)
- [随笔分类]问题集 (3)
- [网站分类]代码与软件发布 (1)
- [网站分类]Android开发 (1)
- [网站分类]MySQL (1)
- [网站分类]开源研究 (6)
- ddd (0)
- 好久没写blog了 (0)
- sqlserver (2)
最新评论
-
JamesLiuX:
博主,能组个队么,我是Freelancer新手。
Freelancer.com(原GAF – GetAFreelancer)帐户里的钱如何取出? -
yw10260609:
我认为在混淆前,最好把相关代码备份一下比较好,不然项目完成后, ...
DotFuscator 小记 -
日月葬花魂:
大哥 能 加我个QQ 交流一下嘛 ?51264722 我Q ...
web应用程序和Web网站区别 -
iaimg:
我想问下嵌入delphi写的程序总是出现窗体后面感觉有个主窗体 ...
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部 -
iaimg:
代码地址下不了啊!
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
一、减少往返行程(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),否则将使用代价昂贵的二进制序列化程序。
总结:光有了这些技术方法还不够,还需要将这些方法根据你网站的情况灵活运用,适时调整方法,集中解决重要问题,这有这样网站性能才能得到大幅度的优化。
发表评论
-
where T:new() 是什么意思
2014-04-18 09:26 1477where T:new() 是什么意思 经常看到方法后面 ... -
好久没写blog了
2012-05-21 18:43 2好久没写blog了 -
test
2011-03-19 09:48 829testddddddddddd -
QQ自动发日志分析
2011-03-10 18:15 1281首先列举比较重要的问 ... -
test
2011-02-23 18:03 820test -
test
2011-02-23 17:53 894test -
为啥cnblogs的数据不能导了
2011-02-23 11:03 927为啥cnblogs的数据不能导了内容 -
如何保护.net中的dll文件(防破解、反编译)
2010-07-30 00:28 1505.net是一种建立在虚拟机上执行的语言,它直接生成 MSIL ... -
提搞网站访问速度可做哪些优化
2010-08-08 15:30 1130一、 服务器优化 ... -
ASP.NET(c#)如何判断浏览器是否支持cookies
2010-07-29 09:33 1733实例代码: 下面是写cookie ... -
N点虚拟主机管理系统(For Windows2003/2008)功能及介绍
2010-04-09 11:23 2276N点虚拟主机管理系统是 ... -
使用c#+(datagrid控件)编辑xml文件
2010-04-06 09:13 1177对xml文件的记录进行删除,修改,或增加新记录。 利用了d ... -
HTTP代理模块(HTTP Proxy)
2010-04-04 10:19 3062HTTP代理模块(HTTP Proxy ... -
Error 80040154 retreiving COM Class factory
2010-03-29 09:23 22651.ask: Greetings, I have ... -
petshop4.0 详解之二(数据访问层之数据库访问设计)
2010-03-27 11:08 1081在系列一中,我从整体上分析了PetShop的架构设计,并提及了 ... -
分享十五个最佳jQuery幻灯插件和教程
2010-03-25 09:17 2023<p>在网站前端中使用jQuery库已经变得越来越 ... -
20个软件开发常用设计文档大全下载
2009-08-27 10:22 986搜集了一些软件开发的常用文档,分享给大家 总下载地址: h ... -
asp.net 在线 mp3,wma, avi
2009-09-04 13:58 9381.前台js<script type="tex ... -
sql db link string
2009-09-06 21:52 995SQL Server ODBC Standar ... -
ASP.Net2.0小技巧 保持滚动条的位置 焦点移动到某个控件 $符号轻松的使用FindControl
2009-09-11 11:05 1310您可能不知道的ASP.Net2.0 ...
相关推荐
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
此为《构建高性能可扩展ASP.NET网站》一书的源码 让ASP.NET + SQL Server网站飞 迅速提升网站性能,全面挖掘网站潜力 微软资深技术专家力作,亚马逊全五星评价 本书针对ASP.NET 网站开发中可能遇到的问题,给出了...
《构建高性能可扩展ASP.NET网站》针对ASP.NET网站开发中可能遇到的问题,给出了经过实践检验的具体解决方法。涉及的内容包括:加快显示HTML的方法、缓存的最佳方式、如何使用IIS、如何处理会话状态、如何配置SQL ...
* ASP.NET Core 的未来发展方向将集中于提高性能、完善功能和扩展生态系统。 * ASP.NET Core 的社区将继续增长和壮大,提供更多的支持和资源。 * ASP.NET Core 的应用场景将继续扩展,涵盖更多的行业和领域。 ASP...
【标题】"大学专用智能评教系统源代码ASP.NET"是一个专门为高等教育机构设计的在线教学质量评估平台的源代码实现。该系统基于ASP.NET技术,它提供了便捷、高效且智能化的评教功能,旨在帮助大学改进教学质量,提升...
2. **缓存策略**:利用ASP.NET的缓存机制可以显著提高网站性能,包括页面级缓存、数据缓存和输出缓存。正确配置缓存策略可以减少数据库访问,降低服务器负载。 3. **异步编程**:ASP.NET支持异步操作,如异步控制器...
构建高性能可扩展ASP.NET网站.part1 构建高性能可扩展ASP.NET网站.part2
通过深入研究这些ASP.NET网站的源代码,你可以逐步掌握ASP.NET的核心概念和技术,提高自己的开发能力。每个例子都是一个独立的学习点,将它们结合在一起,你就能够构建出功能完善的Web应用。在实践中不断探索和学习...
Visual C++.NET入门与提高实用教程
根据提供的标题“你必须知道的.NET第二版”以及描述中的信息来看,这应该是一本关于.NET框架或.NET Core平台的详细介绍和技术指南书籍。虽然提供的部分内容并没有包含实际的技术信息,但我们可以基于标题和描述来...
ASP.NET是微软公司推出的用于构建动态网站、Web应用程序和Web服务的框架,它基于.NET Framework,提供了丰富的功能和强大的性能。 在提供的压缩包文件中,我们可以看到多个关键的文件,这些文件构成了ASP.NET网站的...
ASP.NET是微软公司开发的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了强大且易用的工具,使得创建动态网站、Web应用程序和Web服务变得更加简单。本教程全集将带你深入理解和掌握ASP.NET的...
最后,Asp.Net MVC还集成了AJAX支持,使你可以创建部分页面更新的应用,提高用户体验。通过jQuery和Ajax.BeginForm等方法,可以实现异步请求,而无需刷新整个页面。 综上所述,Asp.Net MVC教程的案例涵盖了模型-...
《.NET Core 高性能开发》一书深入探讨了如何在Windows、Mac和Linux系统上充分利用.NET Core框架实现高性能的应用程序。.NET Core是微软推出的一款开源、跨平台的开发框架,它为开发者提供了构建高性能、云就绪应用...
《构建高性能可扩展ASP.NET网站》针对ASP.NET网站开发中可能遇到的问题,给出了经过实践检验的具体解决方法。涉及的内容包括:加快显示HTML的方法、缓存的最佳方式、如何使用IIS、如何处理会话状态、如何配置SQL ...
asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板asp.net网站后台模板
VB.Net 应用教程.chm
- **Partial Page Rendering**:ASP.NET AJAX实现了部分页面渲染,减少了页面重绘的开销,提高了用户体验。 - **Web Services和Page Methods**:为了支持AJAX调用,ASP.NET提供了Web Services和Page Methods两种...
编译式模型使得ASP.NET应用在运行前就被编译为高效的机器代码,提高了性能。事件驱动编程模式简化了网页交互逻辑,而丰富的服务器控件则极大地丰富了用户界面的设计和实现。 在ASP.NET中,网站和应用程序的结构通常...