繁体   English   中英

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

[英]Speeding up an ASP.Net Web Site or Application

我有一个支持 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 压缩,缩小 javascript)
    1. YUI 压缩机
    2. .NET YUI 压缩器

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

如果您使用 Firefox 来测试您的网站,您可能想尝试来自 Yahoo! 称为YSlow

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

更新

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

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

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

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

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

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

您似乎开始假设您的问题是下载大小 - 情况可能不一定如此。 您应该对您的 ASP.NET 站点进行一些实验,以确定您的代码中是否存在导致过度延迟的区域。 如果事实证明下载大小不是您的问题,您将需要找到缓存结果的方法(查看输出缓存,这是 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 分钟。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM