建议为站点实施缓存解决方案

时间:2010-11-15 12:16:03

标签: .net asp.net caching

我正在公共网站上工作,很快就不会100%公开了。付费用户将能够访问100%的功能,而“匿名”用户将访问缩减版本。

问题是匿名用户和付费用户会访问相同的网页,但他们会看到不同的内容。

我想知道如何继续为所有页面使用缓存。我必须100%确定我为每种类型的用户显示正确的内容。向匿名用户展示付费网站的缓存版本会非常糟糕(反之亦然)。

最好不要在网址上添加任何内容来区分用户类型。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以将应用程序缓存用于业务数据,这基本上是键值对的字典,您可以将任何您喜欢的内容放入其中。然后,您可以以编程方式检查它们是否已登录。您仍将在每次访问时呈现页面,但希望检索缓存的数据将提供所需的性能提升。

或者,它可能是possible to turn off the output-cache programatically, as described in this question.

引用this answer from David Ebbo

在OnInit中:

if (yourArbitraryCondition) {
    OutputCacheParameters outputCacheSettings = new OutputCacheParameters();
    outputCacheSettings.Duration = 60;
    InitOutputCache(outputCacheSettings);
}

答案 1 :(得分:1)

我认为您正在寻找的是通过 varybycustom 选项来完成输出缓存。使用此方法,您可以定义一个函数,以返回在检索页面的输出缓存版本时使用的自定义参数值,以便用户获得自己的个性化缓存版本,并且所有匿名用户都应该看到相同的缓存版本,因为他们将使用一些相同的价值。这是一个包含更多信息的链接: http://aspadvice.com/blogs/ssmith/archive/2007/10/29/VaryByCustom-Caching-By-User.aspx

对于程序化数据缓存,您应该使用用户ID作为其键的一部分来检索数据以达到相同的效果。