【问题标题】:Combine global and userspecific information (cache and session)结合全局和用户特定信息(缓存和会话)
【发布时间】:2011-07-16 09:32:30
【问题描述】:

为了让 Web 应用程序更快,我想实现缓存。有一个具有不同元素列表的类,我想在缓存中保留它们,因为大多数信息对于每个用户(全局)都是相同的。但是在元素上是一些用户特定的信息,我必须存储并保持快速访问(会话?)。

我正在考虑某种与缓存和会话的组合,但我认为这是不可能的?该信息用于许多不同的地方,这就是为什么我希望将这些信息尽可能地放在一起。 有人对这个问题有好的解决方案吗?

【问题讨论】:

    标签: c# .net session caching


    【解决方案1】:

    虽然没有内置方法可以同时组合使用它们,但您可以编写包装类,该类从两个部分获取全部信息,例如:

    class Information
    {
      public string UserName { get { return this.GetFromSession("UserName"); } }
      public string WebSiteName { get { return this.GetFromCache("WebSiteName"); } }
    
      private string GetFromSession(string key)
      { /* get information from session */ }
    
      private string GetFromCache(string key)
      { /* get information from cache */}
    }
    

    然后你就可以使用:

    Information info = new Information();
    Response.Write(info.UserName);
    Response.Write(info.WebSiteName);
    

    这有帮助吗?

    【讨论】:

    • 感谢您的回答 Tengiz!但是我需要更深层次的。我有一个带有页面的列表,每个页面都包含多个(列表)元素,其中包含有关每个单个元素的多个信息。元素的位置属性是唯一的用户特定的东西.. 但我不喜欢单独存储每个元素.. 当我仍然希望有可能访问元素的位置时,这个解决方案不是必需的元素位置?从缓存的元素对象中的位置属性访问会话对象会很舒服..
    • 无论如何都应该通过某种包装类来解决。我只写了一个例子,但实现方式因情况而异。
    • 我希望有可能从一个 chached 类中访问一个会话变量,但不幸的是这似乎是不可能的。我会像你展示 Tengiz 那样构建一些东西,所以感谢你的帮助!
    猜你喜欢
    • 1970-01-01
    • 2014-08-16
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多