25

我有一个启用 Ajax.Net 的 ASP.Net 2.0 网站。网站和数据库的托管和数据库的架构一样不受我控制。在对硬件进行测试时,我确实控制了该站点的性能,但是在客户端的硬件上,重新加载或更改页面时会出现明显的延迟。

我想做的是让我的应用程序在交付时尽可能紧凑和快速。一种想法是为站点的所有静态资源设置到期日期,这样它们就不会在页面加载时被调用。资源是指图像、链接样式表和 JavaScript 源文件。是否有捷径可寻?

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

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

4

12 回答 12

22
  1. .net 3.5 SP1 中的脚本组合
  2. 快速网站的最佳实践
  3. HTTP 压缩 (gzip)
  4. 压缩 JS/CSS(不同于 http 压缩,缩小 javascript)
    1. YUI 压缩机
    2. .NET YUI 压缩器

我最好的建议是查看YUI 内容。他们有一些很棒的文章谈论CSS sprites之类的东西,并且有一些很好的 javascript 库来帮助减少浏览器发出的请求数量。

于 2008-08-14T19:03:58.720 回答
4

如果您正在使用 Firefox 来测试您的网站,您可能想尝试使用 Yahoo! 提供的漂亮的 Firefox 扩展程序。称为YSlow

它会分析您的网页,并为高性能网站的每个最佳实践提供 AF 等级(A 表示最佳,F 表示最差)。它将帮助您追踪您可以优化以获得加速的网站元素。

更新

现在YSlow扩展与所有现代浏览器兼容,如 Firefox、Chrome、Opera、Safari 等,请在此处阅读更多信息。

于 2008-08-14T19:11:07.507 回答
3

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

于 2008-08-14T19:06:44.753 回答
2

几个月前,我写了一篇关于提高 ASP.NET 页面性能的博客文章。这里有一些快速简便的方法 -

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

我认为您确实需要能够在生产中运行时从应用程序中获取一些实际的 PerfMon 数据/遥测数据,以便能够就优化什么做出明智的决定。

作为一次性提示,我会确保您的应用程序部署为发布版本,并在 web.config 的“编译”部分中设置 debug="false" 。

于 2008-08-14T19:10:06.947 回答
1

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

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

于 2008-08-14T19:28:00.280 回答
1

你试过这些技巧吗?

http://weblogs.asp.net/haroonwaheed/archive/2008/06/30/ASP.NET-Performance-Tips.aspx

于 2008-08-14T19:53:55.437 回答
1

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

已经提到了用于 AJAX 的脚本组合,但我没有注意到对 ScriptReferenceProfiler MS 的引用已在 codeplex 上发布以帮助确定要组合的内容。Mike Ormond在这方面有一个很好的起点

如果您对数据库执行大量插入操作,另一个提示是仔细检查服务器的磁盘缓存是否已打开。例如,我有一个数据导入器在运行期间执行了 120 万次插入。花了 4 个小时,在没有缓存的情况下进行了更改。开了16分钟。

于 2008-08-28T11:43:02.253 回答
1

一起使用 ASP.NET 和 Ajax(任何 Ajax 库)时,一般的事情是避免让您的 Page_Load 和 Page_Init(以及它们的方法对应物)的事情变得笨拙,因为它们将在每个 Ajax 请求上执行。

话虽如此,我会认真放弃 ASP.NET AJAX 并使用其他任何东西......

Anthem.NET、AjaxPRO.NET、jQuery 或除 ASP.NET AJAX 之外的其他任何东西......

当然,我自己会使用Ra-Ajax,因为那是我的项目。但话说回来,我有偏见......

于 2008-11-20T09:06:08.110 回答
0

您可以根据您的客户支持它打开压缩。见这篇文章:链接文字

于 2008-08-14T18:55:21.343 回答
0

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

于 2008-08-14T18:55:58.050 回答
0

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

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

于 2008-09-17T22:58:58.980 回答