问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

如何提高asp.net应用程序性能和可扩展性

发布网友 发布时间:2022-04-28 16:48

我来回答

1个回答

热心网友 时间:2022-04-27 10:06

Asp.net有很多值得你挖掘的“秘密”,当你发现了它们,将会给你网站的性能和可扩展性带来巨大提升!例如,对于Membership以及Profile提供程序有一些秘密的瓶颈,它们很容易被解决,从而使认证和授权更加快速。另外,asp.net的http管线可以为每一个请求作处理,防止执行了某些不必要的代码而遭受攻击。不只是这些,asp.net工作进程能够突破默认*,从而完全发挥它的威力。在浏览器端(不是在服务器端)的页面分段输出缓存能显著减少由于请求访问所需要占用的大量下载时间。在需要的用户界面上的加载能够给你的网站带来快速而平稳的体验。最后,内容分发网络(CDN)以及对HTTP缓存头的正确使用能够使你的网站得到快速响应。

在这篇文章中,你将学习这些技术,给你的asp.net应用程序性能和可扩展性带来巨大的提升。下面是接下来将要讨论的技术:

Asp.net管线优化 Asp.net进程配置优化 Asp.net网站上线之前你必须要做的事 内容分发网络(CDN)
浏览器端缓存Ajax调用 最大限度地正确使用浏览器缓存 在需要的UI上逐步加载以提供快速平滑的体验 优化asp.net 2.0Profile
提供程序 怎样在不“下线”站点的情况下查询asp.net 2.0的Membership表 防止拒绝服务攻击

上面的技术都能够在任何的asp.net网站中实现,特别是那些使用了asp.net 2.0的Membership以及Profile 提供程序的网站。

Asp.net管线优化

有一些asp.net默认的HttpMoles被设置在请求管线中,它们会参与每一个请求。例如,SessionStateMole会处理每一个请求,转换会话cookie然后给HttpContext加载适当的session。不是所有的这些模块都总是被需要的。例如,如果你没有使用Membership
以及 Profile
provider,你就不需要FormsAuthentication模块。如果你没有对你的用户使用Windows认证,你就不需要WindowsAuthentication模块。这些模块只是被安置在管线之内,对每一个请求执行某些不是必须要的代码。

这些默认模块被定义在machine.config文件中(位于$WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG directory)

上面的配置非常适合那些使用数据库并基于Forms认证,并且不需要任何Session支持的网站。所以,所有上面这些模块都能够被安全地移除。

Asp.net进程配置优化

Asp.net进程模型配置定义了一些进程级别的属性,例如asp.net使用了多少线程数,在超时之前它会阻塞线程多久,允许多少请求
等待I/O工作完成等。这些默认的配置在很多情况下有太多的*。现在,硬件已经变得相当便宜,技嘉科技的双核RAM服务器已经变成了非常普遍的选择。所以,进程模型配置可以配置得让asp.net线程使用更多的系统资源,并为每一个服务器提供更好的扩展性。

一个通常的asp.net的安装将按如下的配置创建一个machine.config:

这里除了以下的一些值,其他值都是默认值:

maxWorkerThreads-对每个进程来说20是默认值。在一个双核计算机上,将会给asp.net分配40个线程。这意味着asp.net一台双核机器上一次能够并行处理40个请求在。我将它增加到100,给予asp.net每个进程更多的线程。如果你有一个不是CPU密集型应用程序,可以很容易地处理更多地请求量,那么你可以增加该值。特别是如果你的Web应用程序使用许多Web

Service调用或者下载/上传的许多数据没有给CPU带来压力的话。当asp.net运行超过它允许的工作线程数,它将会停止处理更多到来的请求。请求被放进一个队列中,并保持等待知道一个工作线程被释放。当你的站点开始遭受比你预期的更多的攻击时,通常会发生这样的情况。如果遇到这种情况,如果你的CPU有空闲,给每个进程(asp.net进程)增加工作线程数。maxIOThreads-对每个进程来说20是默认值。在一个双核计算机上,将会给asp.net分配40个线程来进行I/O操作。这意味着在一台双核服务器上asp.net一次可以并行处理40个I/O请求。I/O请求可能是文件的读写、数据库操作、Web

Service的调用Web应用程序内部生成的Http请求等。所以,你可以将它设置为100,如果你的服务器有足够的系统资源来处理更多的I/O请求的话。特别是,当你的Web应用程序经常下载或上传数据,并行调用许多外部的webservice时,效率提升会很明显。minWorkerThreads-当可用的asp.net工作线程数下降到该值以下时,asp.net开始将即将到来的请求压入队列。所以你可以将该值设置为一个很低的数字来增加可被处理的当前请求的数目。然而,不要将它设置地过低,因为Web应用程序代码可能需要做某些后台处理以及某些并行处理需要一定数量的空闲工作线程。minIOThreads-与minWorkerThreads相同,但这个值涉及的是I/O线程数。但是,你可以给它设置一个比minWorkerThreads更低得数字,因为没有发生在I/O线程上并行处理的情况。momoryLimit-指定允许使用内存大小的最大值,是与系统总内存的百分比。它是在asp.net在启动一个新进程和重新分配正在处理的请求之前工作进程可以消耗的内存大小。如果只有你的Web应用程序允许在一个“专用的盒子里”并且没有其他的进程需要RAM,你可以设置它为一个很高的值,比如80。但是,如果你有一个内存泄露的应用程序总是不断泄露内存,最好将它设置为一个低一点的值,以便泄露内存的进程可以在它变得无法处理之前尽快被彻底回收。特别是,当你正在使用一个COM组件并且它产生内存泄露时,就会遇到这种情况。

除了processModel节点,还有一个非常重要的节点——system.net,你可以指定给一个IP它能外发请求数的最大值。

无论什么时候一个页面的请求完成之后,ProfileProvider将自动地保存profile。所以,这可能导致你数据库的一个不必要的更新,它有很显著的性能损失!关闭自动保存并且在你的代码中使用Profile.Save()明确地完成。

上面的三个设置主要是为了高访问量的网站。

内容分发网络

来自浏览器的每一个请求都是通过了跨越世界的骨干网到达你的服务器的。请求需要经过一定数量的国家、*、海洋才传递给你的服务器,所以它会变得很慢。例如,如果你将你的服务器架在USA,并且一些人在澳大利亚浏览你的网站,每一个请求都从地球的一端到另一段才能到达你的服务器,然后再返回给浏览器。如果你的站点有很大数量的静态文件,像图片、CSS、Javascript。为它们发送请求,跨越世界去下载它们,将会花费大量的时间。如果你能够在澳大利亚架设一台服务器,并且重定向用户到你在澳大利亚的服务器上去,那每一个这样的请求将比到达美国花费更少的时间。不仅网络延迟会更小,数据传输的路由也将更为快速,因此静态内容将能够以更快的速度下载。
ASP.NET性能提升秘诀之管道与进程优化

当空闲的ASP NET工作者线程数量低于这个数字时 ASP NET就会开始将这些发来的请求推入队列中 因此 你可以为改值设定一个较低的值以便可以增加当前请求的数量 此外 建议不要将该值设置得过低 因为Web应用程序的代码可能需要做一些后台处理和并行处理 此时会需要更多的空闲工作者线程支持 minIOThreads 除了它...

ASP.NET如何进行性能优化问题

程序结构方面 从程序的可扩展性看 使用存储过程会对程序以后的修改带来方便 比如数据库的结构改变了 只需修改相对应的存储结构 和程序中的调用部分即可 这部分不属于本文探讨范围 属于程序结构设计方面 所以不在此展开 程序安全性 使用存储过程可避免SQL Injection攻击 二 查询语句的优化(针对sql server ) 很多人...

asp.net上mvc结构的性能比起所有操作都放在页面的cs里更好吗?_百度知...

通过在ASP.NET中的MVC模式编写的,具有极其良好的可扩展性。它可以轻松实现以下功能: ①实现一个模型的多个视图; ②采用多个控制器; ③当模型改变时,所有视图将自动刷新; ④所有的控制器将相互独立工作。 这就是MVC模式的好处,只需在以前的程序上稍作修改或增加新的类,即可轻松增加许多程序功能。以前开发的许多类...

ASP.NET的可管理性有哪些

可以路程经过过程在现有 ASP 应用程序中逐渐添加 ASP.NET 功效,随时增强 ASP 应用程序的功效。 ASP.NET 是一个已编译的、基于 .NET 的情况,把基于通用语言的程序在办事器上运行。将程序在办事器端首次运行时进行编译,比ASP即时解释程序速度上要快很多.而且是可以用任何与 .NET 兼容的语言(包括 V...

aspnet有什么好?

◆扩展性和可用性:ASP.NET 被设计成可扩展的、具有特别专有的功能来提高群集的、多处理器环境的性能。此外,Internet 信息服务 (IIS) 和 ASP.NET 运行时密切监视和管理进程,以便在一个进程出现异常时,可在该位置创建新的进程使应用程序继续处理请求。详细信息,请参阅ASP.NET 进程隔离。◆跟踪和...

asp.net网站开发需要用到OOP技术吗

OOP 是面向对象的设计思想。而起这些设计思想不是一时就能明了及掌握的。需要你自身多做项目,多体会。好的设计可以使程序再健壮,就是所谓的扩展性,可复用性。

asp.net开发3层架构的优点和缺点

1、开发人员可以只关注整个结构中的其中某一层;2、可以很容易的用新的实现来替换原有层次的实现;3、可以降低层与层之间的依赖;4、有利于标准化;5、利于各层逻辑的复用。6、扩展性强。不同层负责不同的层面,如PetShop可经过简单的配置实现Sqlserver和oracle之间的转换,当然写好了也可以实现B/S...

如何构建ASP.NET 的运行环境

8)扩展性和可用性: ASP.NET 被设计成可扩展的、具有特别专有的功能来提高群集的、多处理器环境的性能。此外,Internet 信息服务 (IIS) 和 ASP.NET 运行时密切监视和管理进程,以便在一个进程出现异常时,可在该位置创建新的进程使应用程序继续处理请求。 9)跟踪和调试: ASP.NET 提供了跟踪服务,该服务可在应用...

编程里常提到的扩展性,这扩展是什么意思?

可扩展性是软件设计的原则之一,它以添加新功能或修改完善现有功能来考虑软件的未来成长。可扩展性是软件拓展系统的能力。简单地说,可扩展性就是关于如何处理更大规模的业务。比如,Web应用程序就是允许更多的人使用你的服务。如果你不能弄清楚如何提高性能的同时向外扩展,没关系。只要你能处理更大规模...

ASP.NET比拼PHP,谁是速度之王?

如果你的应用程序必须使用MySQL 那么选择Windows就需要早些计划扩展性问题了(个人认为Sun不太可能为Windows优化MySQL的性能) PHP的第一个版本的SQL Server驱动程序要比MySQL或PostpreSQL要慢一些 但这应该不会成为问题 第二个版本的驱动器正在开发之中 它会带来性能提升 在Joe看来 全面来看 PHP和IIS团队在执行性能...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
...没有一些能够尝试的办法,住的别墅,接管口在地下埋着,急!!!_百度知... 我家农村住宅的西北角被人埋了四面镜子和十个镜子,我家这几年母亲老 不小心把美服LOL转到大洋洲了 怎么转回来 柚子皮别丢,放水里煮一煮,三个作用厉害了,早知道就不丢了 白醋泡柚子皮真厉害了,我也是刚知道,看完赶紧提醒家人,真实用 英雄联盟欧服的水平怎么样?欧服它有几个区呢?他和韩服国服相比的话... 英雄联盟欧服账号被暂封要怎么办 因为卡有点问题 充的钱要先还回去... 我打开欧服的英雄联盟的时候出现一个这个东西,求助啊。。。 英雄联盟美服和欧服一样么,怎么我进美服官网下和欧服官网下中文翻译都是... 0.18乘以8.45的验算是多少? asp.net如何提高文件拷贝效率,急求! 如何让asp.net运行效率变高 asp.net怎样上传超过2GB的大文件? asp.net上传文件如果太大就报错。 Asp.Net如何实现多线程上传大文件,最好有控 培训心得或学习心得该怎么写 net 的 ftp上传文件速度怎么这么慢 asp.net大文件上传问题 asp.net用多线程上传大文件(500MB~2G) asp.net 上传大文件(几百兆),上传速度太慢,有没有好的解决方案。我分别... 在ASP.NET上怎么实现上传超过4G的文件 asp.net中,用FileUpload控件上传文件很慢 不动产预告抵押登记是什么 冮苏不动产登记细则 办理房产抵押登记的手续流程 不动产抵押合同登记基本程序是什么 不动产抵押登记手续四条新规请注意 不动产抵押登记生效的要件是什么 我是美女,请问我可不可以在冬天光脚穿一字高跟凉鞋出门? 赤脚穿凉鞋 asp.net文件上传怪事 asp.net上传图片为什么不能超过80K 如何解决 asp.net2.0中上传不了大的文件,请问怎么办啊 asp.net C# 如何实现在服务器上拷贝文件时,控制拷贝速度 怀孕梦见一条小青蛇追着我,生男孩还是女孩 杭州2020年9月怎么限行? 梦到去洗澡,一条小青蛇在追赶我? 2020元旦杭州限行吗? 孕妇早期做梦梦见小青蛇,中期的时候梦到男孩,不知道到底男孩女孩, 梦见小青蛇生男生女? 老公梦见小青蛇是男孩是女孩 求解梦:昨晚先是梦到一条小青蛇,我们就追着它,后来又出现一条大青蛇。预示什么? 怎样管理好二年级? 新教师如何进行小学二年级班级管理? 居家学习视导组该干什么 怎样制定一份班级二年级的公约? 小学二年级班主任,如何管理课堂纪律? 小学班长怎样管理好班级纪律 如何更好地进行小学二年级的班级管理? 怎样开展教学视导工作
  • 焦点

最新推荐

猜你喜欢

热门推荐