2011-03-16 36 views
0

为了使Web应用程序更快,我想实现缓存。有一个包含不同元素列表的类,我希望在缓存中可用,因为大多数信息对于每个用户(全局)都是相同的。但是元素是一些用户特定的信息,我必须保存并保持快速访问(会话?)。结合全局和用户特定信息(缓存和会话)

我正在考虑与缓存和会话的某种组合,但我认为这是不可能的?这些信息被用于许多不同的地方,这就是为什么我想尽可能保持信息尽可能接近的原因。 有没有人对这个问题有很好的解决方案?

回答

0

虽然有一次使用它们的组合没有内置的方式,你可以写你的包装类,其获取来自这两个部分的全部信息,例如:

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); 

这是否对您有帮助?

+0

感谢您的回答Tengiz!但是我会在更深层次上需要它。我有一个包含页面的列表,每个页面都包含多个(列表)元素,这些元素包含关于每个元素的几个信息。该元素的位置属性是唯一的用户特定的事情..但我不喜欢存储每个元素seperatly ..这不是必要的这种解决方案,当我仍然想有可能访问元素的位置element.position?在缓存的元素对象中访问会话对象的位置会很舒服。 – eXos 2011-03-16 12:28:51

+0

无论如何,应该由某种包装类来解决。我只写了一个例子,但实现方式因案例而异。 – Tengiz 2011-03-16 12:40:29

+0

我希望有一个可能性,以访问一个会议变量chached类,但不幸的是,这似乎是不可能的..我会像你展示Tengiz一样的东西,所以感谢您的帮助! – eXos 2011-03-17 06:58:33