我有一个启用 Ajax.Net 的 ASP.Net 2.0 网站。站点和数据库的托管以及数据库的架构都超出了我的控制范围。在硬件测试中,我确实控制了站点的性能良好,但是在客户端的硬件上,重新加载或更改页面时会出现明显的延迟。

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

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

更新:我在网站上运行了 YSlow,受到影响最严重的地方是加载的 JavaScript 和样式表的数量(23 个 JS 文件和 5 个样式表)。除一个(主样式表)外,所有样式表均已由 Ajax.net 和 Asp 插入。为什么这么多?

有帮助吗?

解决方案

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

我最好的建议是查看 YUI内容. 。他们有一些很棒的文章,讨论了诸如 CSS 精灵 并有一些 不错的 JavaScript 库,有助于减少请求数量 浏览器正在制作。

其他提示

如果您使用 Firefox 来测试您的网站,您可能想尝试一下来自 Yahoo! 的漂亮的 Firefox 扩展。被称为 慢速.

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

默认情况下关闭视图状态,即使是最简单的页面也会有天壤之别。

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

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

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

作为一个一次性提示,我会确保您的应用程序部署为 发布 在 ' 中构建并设置 debug="false"汇编' web.config 的部分。

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

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

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

已经提到了针对 AJAX 的 Scirpt 组合,但我没有注意到 MS 在 codeplex 上发布的 ScriptReferenceProfiler 的参考,以帮助确定要组合的内容。迈克·奥蒙德 在这方面有一个很好的起点.

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

一起使用 ASP.NET 和 Ajax(任何 Ajax 库)时的一个普遍做法是避免增加 Page_Load 和 Page_Init(及其对应方法)的内容,因为这些内容将在每个 Ajax 请求上执行。

说到这里,我会认真放弃 ASP.NET AJAX 并使用 任何事物 别的...

Anthem.NET、AjaxPRO.NET、jQuery 或 ASP.NET AJAX 之外的其他内容...

我当然会用 拉阿贾克斯 我自己,因为那是我的项目。但话又说回来,我有偏见……

您可以根据您的客户端支持压缩来打开压缩。参见这篇文章: 链接文本

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top