【问题标题】:Advice for website speed improvement?提高网站速度的建议?
【发布时间】:2011-02-17 00:08:34
【问题描述】:

这个在线图书馆我快用完了:http://gramma.ro

我在 YSlow 中的成绩为 C,但我仍然对为此花费的平均时间不满意 要加载的网站(在我的互联网连接上大约 7 秒)。

也许你们中的一些人会说它运行良好,但请与这个速度比较:http://www.libris.ro/,绝对快。

您对我的申请有什么建议吗?您是否看到了我可以改进的关键地方,这些地方可以大大减少我网站的加载时间?

数据库使用:sql server 2008。

语言使用:c# + asp.net

使用的硬件:专用服务器、AMD 64 2.2 Ghz、2 GB 内存

提前谢谢...

更新:我在我的页面上为 4 个用户控件使用了 OutputCache(1 小时或 1 天)选项,这提高了 3 秒的网站加载速度!!!

【问题讨论】:

  • YSlow 怎么说?为什么不从改进这些开始呢?
  • 因为我从 F 级到 C 级,并没有像我预期的那样提高速度......
  • 你在 ASP.Net 端做过测试吗?这可能是导致大部分延迟的原因
  • 您是否研究过内容交付网络?在某些情况下,我相信这些可以加快加载速度,但可能会带来成本。
  • 看起来旋转画廊要害死你了……

标签: c# asp.net optimization


【解决方案1】:

简单的答案是升级您的硬件。但是,我认为可能有一些简单的改进点。

内存使用情况如何?你是否缓存了正确的东西(像 NHibernate SessionFactory 这样的东西不应该在每个请求中都被更新)。

也许您可以使用代码分析器来分析您的网络应用。我已经成功使用了 JetBrains 的 DotTrace,它有一个试用版 afaik。您只需选择要分析的应用程序,运行一些请求并检查哪些方法花费太多时间的输出。然后你可以深入到方法中,看看你的哪一段代码花费的时间太长了。

衡量代码的性能很重要,因为您(通常)不能凭直觉行事。

[编辑] 哦,你可能已经知道一件事:这不是文件大小问题,这意味着它也不是一个大的视图状态问题。

【讨论】:

  • 非常有用的 DotTrace。我刚刚开始测量性能并发现加载时间为 500~700 毫秒的查询...谢谢!
  • @Cristian:请注意 DotTrace 并非永远免费,您需要许可证才能在试用后继续使用它。
【解决方案2】:

在我的脑海中(并且没有看到您的代码): 我假设你正在从数据库中构建你的列表——那个 SQL 是什么样的?您是否优化了查询/查询?表索引是否设置正确?此外,在适当的情况下,像 with (nolock) 这样简单的东西可能会产生巨大的影响。

该网站最初加载需要一段时间,所以我假设您的数据检索速度变慢了。

【讨论】:

    【解决方案3】:

    这取决于很多事情:

    1. 数据库服务器往返
    2. 编译代码与否
    3. 导致下载文件巨大的大视图状态
    4. 需要下载大量图片

    等等

    因此,如果不知道有关您的应用程序的一些确切细节,就很难判断

    建议:

    1. 为图片、js、css文件等静态资源创建静态主机头
    2. 编译应用程序(发布)
    3. 优化网络图片
    4. 使用缓存

    【讨论】:

    • 来自建议: 2. 不幸的是,我使用没有发布工具的 web dev express....:(
    【解决方案4】:

    Yslow 和 Google Page Speed 等基于浏览器的工具只能针对客户端问题提供建议。

    从 Firebug 的时间线来看,您的问题似乎主要出在服务器端。在不知道服务器规格的情况下(它可能负载过重),我不得不假设您的代码太慢了。

    使用分析工具找出代码的哪些部分花费了这么长时间,并找到优化它的方法。通常你会发现 80/20 规则适用,即大部分运行时只被一小部分代码占用。这意味着大问题通常很容易找到和修复,但修复的越多,进一步改进的难度就越大。分析通常是找到大瓶颈的最简单方法,因此首先要解决这些问题。

    【讨论】:

      【解决方案5】:

      这是一个较老的问题,但如果网站没有改变,答案会很糟糕。

      Libris 正在加载:

      • ~500KB 图片
      • JS 140KB
      • 只有 85 个 HTTP 请求
      • 总下载量:737KB

      Gramma 正在加载:

      • ~1050KB 图片
      • JS 为 275KB
      • 有 113 个 HTTP 请求
      • 总下载量:1537KB

      基本上,您的网站几乎在各个方面都翻了一番,而且您使用的是 Flash,这对客户端计算机造成了又一次打击。

      使用 CSS Sprites 并缩小 JS 肯定会有所帮助。请注意,这些数字是在第一次加载时关闭的,您的网站在一分钟后继续下载越来越多,超过 10MB,而 Libris 网站则更加静态。

      【讨论】:

        【解决方案6】:
        1. 不要将css放在标题的样式标签中,而是将其拉出到外部css文件中。

        2. 将任何内联样式也拉到 css 文件中,即顶部的 div 标记具有英里长的样式属性。

        加载时间过长的原因是您试图在一页上推送太多文本。如果您将其拉出到外部文件中,它会缓存它以备下次使用,并使您的初始页面加载速度更快。

        【讨论】:

        • 说实话,页面大小真的没那么大。当然不足以保证 7 秒的页面加载。
        • 从源头看,内容量应该不是问题。他应该先看看他的服务器和/或代码。
        【解决方案7】:

        缓存昂贵的数据库请求,减小图像大小,如果可能,从 cdn 加载 javascript 库

        【讨论】:

          【解决方案8】:

          除了通常的缓存优化之外,您还可以使用新的图像优化器(测试版)- VS2010 扩展,这将减少您的图像(png 和 jpg)文件大小而不会造成质量损失:

          http://madskristensen.net/post/Image-Optimizer-%28beta%29-VS2010-extension.aspx

          【讨论】:

            猜你喜欢
            • 2016-09-01
            • 2019-09-27
            • 1970-01-01
            • 2014-07-23
            • 1970-01-01
            • 1970-01-01
            • 2019-08-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多