如何缓存asp.net网站以获得更好的性能

时间:2010-04-12 17:56:06

标签: asp.net performance caching

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

此外,还接受任何有关在慢速服务器上提高asp.net性能的建议。

4 个答案:

答案 0 :(得分:7)

请注意,自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标头不再从指定以下指令的响应中发出:

     

< OutputCache Location =“ServerAndClient”%>

     

因此,为了抑制Vary:*标题,不再需要SetOmitVaryStar。

     

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

     

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

     

HttpResponse.AppendHeader( “更改”, “*”);

     

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

答案 1 :(得分:6)

我建议您遵循此规则以提高一般性能

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和图像)使用缓存非常重要。

答案 2 :(得分:4)

您使用outputcache指令

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

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

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

答案 3 :(得分:1)

我在几年前写过关于asp.net缓存的文章。我相信你能理解这门语言:

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