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

生产服务器中ASP.NET网站的性能增强程序

  •  3
  • ACP  · 技术社区  · 14 年前

    我在生产服务器中有一个ASP.NET WebForms应用程序,它的速度非常慢。所以我决定从我的So用户同事那里获得一些性能提示。

    我将这些应用于提高我的ASP.NET网站性能,

    1. 集合 debug=false

    2. 转弯 off 示踪

    3. 图像缓存

             <caching>
              <profiles>
                  <add extension=".png" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" location="Any" />
                  <add extension=".jpg" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" location="Any" />
                  <add extension=".gif" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" location="Any" />
              </profiles>
          </caching>
      

    你知道其他真正的性能提升者吗?任何建议…

    3 回复  |  直到 14 年前
        1
  •  3
  •   Aristos    14 年前

    网页只有通过设计才能快速。

    一个简单的选项不能使页面加载更快。debug=off只消除了额外的调试函数,实际上,如果不使用它们,就不能引起很多人的思考。

    我同意保罗所说的一切,你可以 found them here with more details 我不得不说是额外的…

    你需要遵循一些指导,做大量的工作,使他们真正快。 我跟着什么。

    1. 我用(习惯) 我的数据库操作的缓存 这确实提高了数据加载速度,但同时使代码变得更多,我花了很多时间。
    2. 我用过 探查器查找我的慢点 在页面上进行更正。
    3. 我用 检查员 在Google Chrome浏览器上 定位慢速加载 以及双重加载问题。
    4. 我有 消除任何变量的重复使用/创建 在自定义控件上。
    5. 我在客户端浏览器上使用缓存基于 this suggestions .
    6. 我用 网络农场 和/或 网络花园 (多个池)。

    如何查看页面速度: http://code.google.com/speed/page-speed/docs/using.html

    优化缓存: http://code.google.com/speed/page-speed/docs/caching.html

    这里可以找到谷歌的许多一般主题: http://code.google.com/speed/articles/

    关于缓存: http://www.mnot.net/cache_docs/

    希望这有帮助。

        2
  •  2
  •   Paul Hadfield    14 年前

    不是直接的ASP.NET,但是

    1)确保在IIS中启用压缩。

    2)如果您的站点是一个单独域中的cookie“重”主机静态文件(图片、css和js)。返回服务器的每个请求都需要将所有站点cookie信息发送回服务器。因此,如果您的cookie使用量为10kb以上,那么页面中的20个静态文件引用将导致额外的200kb被发送回服务器。如果您将静态文件移到一个没有cookie要求的域上,那么您就除去了这个开销。值得注意的是,由于IE处理问题的“错误”,使用子域没有任何好处,IE似乎坚持将所有域cookie发送到子域。另外一个好处是 HTTP requests in parallel

        3
  •  1
  •   MarkR    14 年前

    停止对生产服务器的黑客攻击(这很可能会引入功能错误),后退一步。您能否在非生产环境中重现性能问题?如果不行,那就做点工作试试。

    您应该尝试如下再现问题:

    • 在测试环境中获取生产级硬件-Web和数据库服务器等-运行与生产相同的硬件
    • 运行与生产相同的软件集-这包括ASPNET和所有其他使用的服务的相同配置。
    • 将生产规模数据(如果可能,请将生产数据)加载到数据库中(请记住将实验室从Internet防火墙,以使其无法向Internet发送邮件或其他内容,否则您的用户可能会开始接收来自测试系统的电子邮件通知,这将很糟糕!)
    • 创建到站点到生产级别的模拟流量-这可能相当棘手,但有很多工具可用

    现在您有了一个在测试中重新处理问题的战斗机会,您可以尝试解决方案。

    通常数据库驱动的网站会受到数据库的瓶颈,所以我将从那里开始。主要技巧是

    • 减少查询次数
    • 优化您执行的查询(获取较少的数据、使用适当的索引等)
    • 更改数据库结构,使您必须执行的查询更容易执行(聚集索引等,可能会取消规范化)

    但是,如果你做了任何改变,在你的测试系统上尝试,测量结果,如果没有帮助,就把它回滚。

    一般来说,配置更改可能只会造成细微的差异,但您也可以尝试这些更改。


    如果所有这些听起来都太费劲了,那就试着把硬件扔给问题所在——开发人员的时间比硬件要贵得多。在你完成上述工作的时间里(可能是几个月,取决于应用程序的复杂程度),你可以买一些肉制品盒。但一定会有帮助的。

    您的数据库是否适合RAM?它能装进内存吗?如果这些问题的答案分别是“否”和“是”,请为数据库购买更多的RAM。这是使数据库在不更改代码的情况下更快运行的最便宜的方法之一。