代码之家  ›  专栏  ›  技术社区  ›  HasanG Joe Dabones

如何缓存ASP.NET网站以获得更好的性能

  •  2
  • HasanG Joe Dabones  · 技术社区  · 14 年前

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

    此外,还可以接受有关在低速服务器上提高ASP.NET性能的任何建议。

    4 回复  |  直到 14 年前
        1
  •  6
  •   Claudio Redi    14 年前

    我建议你遵守这些规则,以提高整体表现

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

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

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

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

    具体来说,对于ASP NET页面来说,输出缓存指令的使用非常简单。给你参考资料

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

    但是请考虑到使用页面缓存以及CSS、JS和图像等其他资源的重要性。

        2
  •  7
  •   Andras Vass    14 年前

    请注意,ASP.NET缓存具有 bug 从1.0开始,这可以有效地禁用客户端缓存。
    这就是为什么 HttpCachePolicy.SetOmitVaryStar() 方法后来被添加为解决方法。 开发人员应该使用它,但不幸的是,似乎很少有人知道上面的方法。
    作为响应,行为在ASP.NET 4.0中发生了更改,如 ASP.NET 4 Breaking Changes list :

    在ASP.NET 1.0中,一个bug导致缓存页指定location=“serverandclient”作为outputcache设置,从而在响应中发出vary:/http头。这样做的效果是告诉客户机浏览器永远不要在本地缓存页面。

    在ASP.NET 1.1中,添加了system.web.httpcachepolicy.setomitvarystar方法,可以调用该方法来抑制vary:*头。之所以选择此方法,是因为更改发出的HTTP头在当时被认为是一个潜在的破坏性更改。然而,开发人员对ASP.NET中的行为感到困惑,错误报告表明开发人员不知道现有的setomitvarystar行为。

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

    <outputcache location=“服务器和客户端”%>

    因此,不再需要setomitvarystar来抑制vary:*头。

    在页面的@outputcache指令中指定location=“serverandclient”的应用程序中,您现在将看到location属性值“的名称”所暗示的行为,即页面将可以在浏览器中缓存,而无需调用setomitvarystar方法。

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

    httpresponse.appendheader(“vary”,“*”);

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

        3
  •  4
  •   Bruce Adams    14 年前
        4
  •  1
  •   Tarik    14 年前

    我几年前写过一篇关于ASP.NET缓存的文章。我相信你能理解语言:

    http://www.csharpnedir.com/articles/read/?id=736&title=ASP.NET%27de