我是一名网页设计师,通常设计不需要更新的企业网站。所以我想将输出缓存一天。我怎样才能做到这一点?
此外,任何有关在慢速服务器上提高 ASP.NET 性能的建议都被接受。
请注意,ASP.NET 缓存有一个bug http://connect.microsoft.com/VisualStudio/feedback/details/254940/the-serverandclient-parameter-with-the-outputcache-page-directive-does-not-cache-on-the-client-without-code从1.0开始,可以有效禁用客户端缓存。
这就是为什么HttpCachePolicy.SetOmitVaryStar() http://msdn.microsoft.com/en-us/library/system.web.httpcachepolicy.setomitvarystar(VS.80).aspx后来添加了方法作为解决方法。
开发人员应该使用它,但不幸的是,似乎很少有人知道上述方法。
作为响应,ASP.NET 4.0 中的行为发生了更改,详细信息请参见ASP.NET 4 重大更改列表 http://www.asp.net/LEARN/whitepapers/aspnet4/breaking-changes/#0.1__Toc256770157:
在 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("变化","*");
或者,您可以将输出缓存位置属性的值更改为“服务器”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)