加速ASP.Net网站或应用程序

时间:2008-08-14 18:52:54

标签: asp.net ajax optimization performance

我有一个启用Ajax.Net的ASP.Net 2.0网站。托管网站和数据库都是我无法控制的,因为数据库的架构也是如此。在硬件测试中我确实控制网站运行良好但是在客户端的硬件上,重新加载或更改页面时会有明显的延迟。

我想要做的是在我交付时尽可能紧凑,快速地使用我的应用程序。一个想法是为所有站点的静态资源设置到期日期,以便在页面加载时不会调用它们。资源我指的是图像,链接样式表和JavaScript源文件。有一个简单的方法吗?

还有哪些其他方法可以优化.Net网站?

更新: 我在网站上运行YSlow,并且我正在受到最大打击的区域是加载的JavaScript和样式表的数量(23个JS文件和5个样式表)。除了一个(主样式表)之外的所有内容都已由Ajax.net和Asp插入。为什么这么多?

12 个答案:

答案 0 :(得分:23)

  1. Script Combining in .net 3.5 SP1
  2. Best Practices for fast websites
  3. HTTP压缩(gzip)
  4. 压缩JS / CSS(不同于http压缩,缩小javascript)
    1. YUI Compressor
    2. .NET YUI Compressor
  5. 我最好的建议是查看YUI content。他们有一些很棒的文章可以讨论像CSS sprites这样的内容,并且浏览器会有一些nice javascript libraries to help reduce the number of requests

答案 1 :(得分:5)

如果您使用Firefox测试您的网站,您可能想尝试一下来自Yahoo!的漂亮的Firefox扩展程序。叫YSlow

它会分析您的网页,并为每个最佳实践提供A-F(A为最佳,F为最差)的成绩,适用于高性能网站。它将帮助您跟踪您可以优化的网站元素,以获得加速。

答案 2 :(得分:3)

默认情况下关闭视图状态,即使是最简单的页面也会产生日夜差异。

答案 3 :(得分:2)

我写了一篇关于改善ASP.NET页面性能的blog post几个月前。这里有一些快速&简单的方法 -

  • 关闭视图状态
  • 关闭事件验证
  • 实施HTTP gzip / deflate压缩以减少响应大小(服务器必须发送回客户端的字节数)
  • 尝试优化/最小化每个请求的数据库调用

答案 4 :(得分:1)

我认为你真的需要能够在生产中运行时从应用程序获得一些实际的PerfMon数据/遥测,以便能够做出关于优化内容的开明决定。

作为一个抛弃提示,我确保您的应用程序部署为 Release 版本,并在您的“编译”部分设置debug =“false” web.config中。

答案 5 :(得分:1)

您似乎首先假设您的问题是下载大小 - 可能不一定是这种情况。您应该对ASP.NET站点进行一些实验,以确定代码中是否存在导致不当延迟的区域。如果事实证明下载大小不是您的问题,您将需要找到缓存结果的方法(查看输出缓存,这是一个ASP.NET功能)或优化您的代码。

在任何情况下 - 查看性能问题的第一步是始终首先验证您的假设,然后决定行动方案。

答案 6 :(得分:1)

答案 7 :(得分:1)

您可以开始查看缓存策略。像CSS(甚至是压缩的)和图像(甚至是优化的)之类的静态文件应该只需要浏览器下载一次一段时间。

已经提到了针对AJAX的Scirpt组合,但我没有注意到在Codeplex上发布的ScriptReferenceProfiler MS的参考,以帮助弄清楚要合并的内容。 Mike Ormond has a good start point on this

如果您对数据库执行大量INSERT,则另一个提示是仔细检查服务器的磁盘缓存是否已打开。例如,我有一个数据导入器在运行期间执行了120万次插入。花了4个小时而不加缓存就改变了。花了16分钟。

答案 8 :(得分:1)

将ASP.NET和Ajax(任何Ajax库)结合使用时,一般情况是避免使用Page_Load和Page_Init(以及它们的方法对应物),因为这些将在每个Ajax请求上执行。

如果说的话我会严重抛弃ASP.NET AJAX并使用任何其他......

Anthem.NET,AjaxPRO.NET,jQuery或除ASP.NET AJAX以外的任何其他内容......

当然我会自己使用Ra-Ajax因为那是我的项目。但是我又有点偏见......

答案 9 :(得分:0)

您可以根据支持它的客户端打开压缩。请参阅此文章:link text

答案 10 :(得分:0)

除非更改,否则不应重新发送静态资源。 IIS将发送一个响应代码,告诉浏览器使用缓存版本。

答案 11 :(得分:0)

您还可以查看ASP.NET输出缓存,它可以非常精细地应用于页面的不同部分:

http://msdn.microsoft.com/en-us/library/xsbfdd8c(VS.71).aspx