使asp.net web应用程序运行速度更快的技巧
为了让任何应用程序运行得更快,首先要找出它花费的时间,然后让它花更少的时间在那里。使用分析器。
分析器简化了将应用程序分解成小块并且加速各个块的过程。如果你买不起探测器,你可以自己做。
例如,你说你的平均响应时间是4-5秒。这是一段很长的时间。这5秒内发生了什么?这一切都在等待数据库吗?您可以尝试在应用程序外部运行查询,查看它们需要多长时间。您可以运行SQL Server Profiler在一段时间内记录数据库事务,然后通过数据库调整向导运行结果。它可能会对数据库的索引进行更改。
您可以使用Fiddler或打开页面跟踪来查明您的页面是否太大。追踪可以告诉你页面操作的特定阶段需要多长时间。也许你需要很长的时间来呈现某些页面。
此外,你需要看看你的服务器的性能。你使用的CPU太多了吗?内存太多?你是否花时间处理页面颠簸,敲开ASP.NET工作进程的页面内存不足以引入SQL Server页面,只有当数据库查询完成时工作进程需要这些页面才会崩溃再次运行?
将问题分解成小块,然后修复这些小块。
缓存(包括页面和数据)以及优化数据访问可能是在不改变硬件的情况下提高性能的关键因素。除此之外,您可以查看集群/负载平衡以提供更多资源。
ASP.NET的性能调整是一个很大的课题。事实上,为了给你的问题提供一个全面的答案,我写了一本关于它的书:Ultra-Fast ASP.NET: Build Ultra-Fast and Ultra-Scalable web sites with ASP.NET and SQL Server。
从高层:
- 尽量减少往返,客户端和服务器之间,以及服务器和数据库之间的感知性能
- 焦点
- 最大限度地减少阻塞调用
- 缓存在所有层
- 优化磁盘I/O管理
- 优化浏览器对象加载和渲染顺序
- 避免使用Ajax,Silverlight和JavaScript的全页面重载
- 避免同步突发写入
- 利用监测和仪表
- 了解SQL Server如何管理内存
- 有效利用分区的数据层
我的方法很大程度上是规定性的,而不是理论性的。您可以查看亚马逊上的评论,了解我的意思。
加入我的书籍队列。感谢您链接它。 – 2010-01-23 06:57:26
我同意缓存。 ASP.NET确实有很棒的内置缓存机制。
我也建议分析应用程序,就像上面已经推荐的一样。
这里是一篇关于一些免费.NET分析器的文章的链接,也是付费的。
http://www.devcurry.com/2009/11/free-net-profilers-and-some-paid-ones.html
编辑:你可能想看看这个StackOverflow的线程以及
https://stackoverflow.com/questions/308816/any-good-free-net-profiler
希望这有助于。
这是一个很大的话题,但浮现在脑海中的主要事情:
- 保持ViewState的大小下来
- 较少的回传。尽可能使用javascript来避免它们。验证控件是如何工作的一个很好的例子。
- 有一个良好的缓存策略
还有非ASP。专用网的东西,像这样的:
- 确保您的数据库查询不陷入泥淖你失望
- 减少HTTP请求
- 保持静态资源在单独使用Cookie的域
- 轮廓你花时间之前优化,这样你就不会浪费时间来优化错误的东西
您也可能会发现这个问题有所帮助:
https://stackoverflow.com/questions/72394/what-should-a-developer-know-before-building-a-public-web-site
什么类型的应用程序? 你有一个数据库吗? 你正在运行计算? 完全主观的问题.... – 2009-12-31 17:37:19
该应用程序是一个asp.net web应用程序,包含82个网页,34个报告(包括图形和文本),DB是sql server 2005.页面平均响应时间约为4-5秒。 – HotTester 2009-12-31 18:00:12
感谢您的所有回复,我非常感谢您的所有建议......我采取了以下解决方案:首先,我通过查询优化工具优化了所有查询。其次我增加了托管应用程序的服务器的内存(以前它是512 MB RAM和现在2 GB)。最后,我消除了所有不需要的视图状态 - >结果应用程序运行速度非常快,平均响应时间现在为1-2秒。如果有人有更多的分享,我非常欢迎 – HotTester 2010-01-05 08:16:08