【问题标题】:How to cache asp.net web site for better performance如何缓存 asp.net 网站以获得更好的性能
【发布时间】:2011-02-07 03:02:11
【问题描述】:

我是一名网页设计师,通常设计不需要更新的企业网站。所以我想将输出缓存一天。我该怎么做?

也接受任何关于在慢速服务器上提高 asp.net 性能的建议。

【问题讨论】:

    标签: asp.net performance caching


    【解决方案1】:

    请注意,自 1.0 以来 ASP.NET 缓存有一个 bug,它可以有效地禁用客户端缓存。
    这就是后来添加HttpCachePolicy.SetOmitVaryStar() 方法作为解决方法的原因。 开发者应该使用它,但不幸的是,他们似乎很少有人知道上述方法。
    作为响应,ASP.NET 4.0 中的行为发生了变化,详见ASP.NET 4 Breaking Changes list

    在 ASP.NET 1.0 中,一个错误导致将 Location="ServerAndClient" 指定为输出缓存设置的缓存页面在响应中发出 Vary:* HTTP 标头。这具有告诉客户端浏览器永远不要在本地缓存页面的效果。

    在 ASP.NET 1.1 中,添加了 System.Web.HttpCachePolicy.SetOmitVaryStar 方法,您可以调用该方法来抑制 Vary:* 标头。选择此方法是因为更改发出的 HTTP 标头在当时被认为是潜在的破坏性更改。但是,开发人员对 ASP.NET 中的行为感到困惑,并且错误报告表明开发人员不知道现有的 SetOmitVaryStar 行为。

    在 ASP.NET 4 中,决定修复根本问题。 Vary:* HTTP 标头不再从指定以下指令的响应中发出:

    因此,不再需要 SetOmitVaryStar 来抑制 Vary:* 标头。

    在页面上的 @OutputCache 指令中指定 Location="ServerAndClient" 的应用程序中,您现在将看到 Location 属性值的名称所暗示的行为——也就是说,页面可以在浏览器中缓存而不需要你调用 SetOmitVaryStar 方法。

    如果您的应用程序中的页面必须发出 Vary:*,请调用 AppendHeader 方法,如下例所示:

    HttpResponse.AppendHeader("Vary","*");

    或者,您可以将输出缓存位置属性的值更改为“服务器”。

    【讨论】:

    • 感谢您提供的信息丰富的回答。我将开始在我的 Asp.Net 4 应用程序中使用缓存。
    【解决方案2】:

    我建议您遵循此规则以提高总体性能

    http://developer.yahoo.com/performance/rules.html

    如果您为 firebug 安装 YSlow,它将为您验证所有这些规则。

    特别是关于缓存,我建议您阅读本教程。缓存是一个非常广泛的话题,用 10 行来解释所有内容并不容易:-)

    http://www.mnot.net/cache_docs/#CONTROL

    专门讨论 ASP NET 页面的输出缓存指令,使用起来非常简单。给你参考

    http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx

    但请注意,将缓存用于页面以及其他资源(如 css、JS 和图像)非常重要。

    【讨论】:

    • 请不要链接到解决方案,因为它们已经过时了,就像上面的链接
    【解决方案3】:

    你使用 outputcache 指令

    http://www.codeproject.com/KB/web-cache/cachingaspnet.aspx

    编写高性能 Web 应用程序的 10 个技巧

    http://msdn.microsoft.com/en-us/magazine/cc163854.aspx

    【讨论】:

      猜你喜欢
      • 2011-11-26
      • 2021-02-19
      • 2013-03-24
      • 2012-06-22
      • 2011-01-30
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多