代码之家  ›  专栏  ›  技术社区  ›  Nick

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

  •  25
  • Nick  · 技术社区  · 17 年前

    我有一个支持Ajax.NET的ASP.NET 2.0网站。网站和数据库的宿主都超出了我的控制,数据库的模式也是如此。在硬件测试中,我确实控制了站点的性能,但是在客户端的硬件上,在重新加载或更改页面时会有明显的延迟。

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

    还有什么方法可以优化.NET网站?

    更新: 我已经在这个站点上运行了yslow,而最让我头疼的地方是加载的javascript和样式表的数量(23个JS文件和5个样式表)。Ajax.net和ASP只插入了一个(主要样式表)。为什么这么多?

    12 回复  |  直到 17 年前
        1
  •  23
  •   Darren Kopp    17 年前
    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

    我的最佳建议是检查 YUI content . 他们有一些很好的文章谈论像 CSS sprites 并且有一些 nice javascript libraries to help reduce the number of requests 浏览器正在生成。

        2
  •  5
  •   Pascal    17 年前

    如果你使用火狐测试你的网站,你可能想尝试一个漂亮的雅虎火狐扩展!打电话 YSlow .

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

        3
  •  3
  •   DevelopingChris    17 年前

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

        4
  •  2
  •   Seibar    17 年前

    我写了一篇 blog post 关于几个月前提高ASP.NET页面性能。以下是一些简单快捷的方法-

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

    我认为你真的需要能够从应用程序中获得一些实际的性能数据/遥测数据,同时在生产中运行,才能做出一个明智的决定,什么是优化。

    作为一个一次性的提示,我会确保您的应用程序部署为 释放 在中生成并设置debug=“false” 汇编 'web.config的部分。

        6
  •  1
  •   John Christensen    17 年前

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

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

        8
  •  1
  •   Dan Maharry    17 年前

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

    scirpt combinding for ajax已经提到,但是我没有注意到对scriptReferenceProfiler MS的引用已经在codeplex上发布,以帮助找出要组合的内容。迈克·奥蒙德 has a good start point on this .

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

        9
  •  1
  •   Thomas Hansen    17 年前

    在一起使用ASP.NET和Ajax(任何Ajax库)时,一般的做法是避免删除页面加载和页面初始化(及其方法对应项),因为它们将在每个Ajax请求上执行。

    如果这样说的话,我会认真抛弃ASP.NET Ajax并使用 任何东西 否则…

    anthem.net、ajaxpro.net、jquery或其他ASP.NET Ajax以外的工具…

    我当然会用 Ra-Ajax 我自己,因为那是我的计划。但我还是有偏见…

        10
  •  0
  •   Campbell    17 年前

    您可以基于支持它的客户机打开压缩。请参阅本文: link text

        11
  •  0
  •   GateKiller    17 年前

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

        12
  •  0
  •   Tim Booker    17 年前

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

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

    推荐文章