【问题标题】:Advice to implement cache solution for a site为站点实施缓存解决方案的建议
【发布时间】:2011-05-10 05:04:54
【问题描述】:

我正在开发一个很快将不再 100% 公开的公共网站。付费用户将能够访问 100% 的功能,而“匿名”用户将访问缩减版。

问题是匿名用户和付费用户将访问相同的页面,但他们会看到不同的东西。

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

最好不要在 url 中添加任何内容来区分用户类型。

谢谢!

【问题讨论】:

    标签: .net asp.net caching


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      或者,它可能是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 感谢您的帮助。 “应用程序缓存”(或缓存对象)是必须的,我们将使用它,但我们需要使用“HTTP 缓存”设置来处理公共站点上的最终峰值,以免 Web 服务器场被杀死。
      猜你喜欢
      • 2011-01-26
      • 2015-04-01
      • 2011-07-03
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      相关资源
      最近更新 更多