我可以使用什么会话或缓存
问题描述:
我正在使用母版页,其中菜单根据代码中的用户角色动态生成。所有应用程序都使用相同的菜单注销特定用户。因此,不需要重新创建它,我需要为所有应用程序提供相同的菜单。菜单在StringBuilder中,它的大小非常大。为什么会话或数据缓存更好,内存消耗更少?请建议?我可以使用什么会话或缓存
我想提高母版页的性能。
感谢
答
我想缓存会更好,因为你将有一个角色只有一个实例创建,但会议将使它创建多个实例多达用户访问,你将不得不等待会话超时有时以释放内存
答
如果每个用户都将获得相同的菜单:
你应该考虑把它在应用程序“高速缓存” - 应用[“的MyMenu”]或在一个静态字段的对象。
这个的主要原因是终身。如果将它放在应用程序级别的对象中,则它将持续应用程序的生命周期。把它放在会话级别的对象中会导致它在会话结束时丢失 - 因为会话是按用户启动的,那么你很快就会发现自己正在回忆数据。
在另一方面......如果它的每个用户的独特之处:
会议提供了一个方便的地方来存放这些数据,因为它是唯一的用户,并且将活不长了以后该用户离开该网站。
想想也是:
如果你真的觉得记忆将是一个问题,或者你想定义你究竟有多长保持为
把它放在高速缓存。您可以确定其在缓存中的时间量,此外,缓存将在内存不足时开始转储对象 - 因此它比其他选项更加敏感。
还有就是Session vs Cache on SO already
此外
商量好了你确定你的菜单是大吗?如果是这样,你可能需要考虑其他选择 - 你说话有多大?
supose我有4个角色。这意味着只有4菜单被缓存在内存中,并根据用户角色用户使用这些菜单我对不对? – Areeb 2012-03-01 13:32:40
是的,或者你可以把它放到应用程序状态中,因为你不需要刷新它们,所以缓存是假设存储需要刷新的数据,你的web服务器可能会在高负载下丢弃缓存对象,但是应用程序状态可以永久保存,请查看:http://msdn.microsoft.com/en-us/library/94xkskdf。ASPX – 2012-03-01 13:47:03