Speeding up an ASP.Net Web Site or Application我有一个启用Ajax.Net的ASP.Net 2.0网站。 网站和数据库的托管以及数据库的架构都无法控制。 在对硬件的测试中,我确实控制了站点的性能,但是在客户端的硬件上,重新加载或更改页面时会有明显的延迟。 我想做的是在交付应用程序时使其尽可能紧凑和快速。 一种想法是为网站的所有静态资源设置失效日期,以使它们不会在页面加载时被调用。 我所说的资源是指图像,链接的样式表和JavaScript源文件。 是否有捷径可寻? 还有什么其他方法可以优化.Net网站?
更新: 我最好的建议是检查YUI内容。他们有一些很棒的文章谈论CSS精灵之类的东西,并有一些不错的javascript库来帮助减少浏览器发出的请求数量。 如果您使用Firefox来测试您的网站,则可能要尝试使用Yahoo!提供的漂亮Firefox扩展。称为YSlow。 它会分析您的网页,并为高性能网站的每种最佳做法提供从A-F(A为最佳,F为最差)的等级。它将帮助您跟踪网站中可以优化以加速的元素。 默认情况下关闭viewstate,即使是最简单的页面也是如此。 几个月前,我写了一篇有关提高ASP.NET页面性能的博客文章。以下是一些快速简便的方法-
一起使用ASP.NET和Ajax(任何Ajax库)时,通常要避免使您的Page_Load和Page_Init(以及与之对应的方法)麻烦,因为它们将在每个Ajax请求上执行。 这么说的话,我会认真放弃ASP.NET AJAX并使用其他任何东西... Anthem.NET,AjaxPRO.NET,jQuery或ASP.NET AJAX以外的任何其他语言... 当然我会自己使用Ra-Ajax,因为那是我的项目。 但话又说回来我有偏见... 您可以开始研究缓存策略。诸如CSS(甚至压缩文件)和图像(甚至优化文件)之类的静态文件只需要在一段时间内由浏览器下载一次即可。 已经提到了针对AJAX的Scirpt合并,但是我没有注意到对ScriptReferenceProfiler MS的引用已在codeplex上发布,以帮助找出要合并的内容。 Mike Ormond在这方面有一个很好的起点。 如果您要对数据库执行大量INSERT操作,则另一个技巧是再次检查服务器的磁盘缓存是否已打开。举例来说,我有一个数据导入程序在运行期间进行了120万次插入。花了4个小时,不进行缓存就进行更改。花费了16分钟。 您是否尝试过这些技巧? http://weblogs.asp.net/haroonwaheed/archive/2008/06/30/ASP.NET-Performance-Tips.aspx 您似乎首先假设问题出在下载大小上,但不一定是这种情况。您应该对ASP.NET站点进行一些试验,以确定代码中是否存在引起不必要的延迟的区域。如果事实证明下载大小不是问题,则需要找到方法来缓存结果(查看输出缓存,这是ASP.NET功能)或优化代码。 无论如何,在查看性能问题时,第一步始终是首先确认您的假设,然后决定采取的措施。 我认为您真的需要能够在生产中运行时从应用程序中获取一些实际的PerfMon数据/遥测,以便能够就最佳化方案做出明智的决定。 作为一个提示,我将确保您的应用程序被部署为Release版本,并在web.config的" compilation"部分中设置debug =" false"。 您还可以查看ASP.NET输出缓存,该缓存可以相当精细地应用于页面的不同部分: http://msdn.microsoft.com/zh-CN/library/xsbfdd8c(VS.71).aspx 除非更改,否则不应重新发送静态资源。 IIS将发送一个响应代码,告诉浏览器使用缓存的版本。 您可以根据客户的支持来启用压缩。看到这篇文章:链接文本 |