我可以使用Session或Cache

时间:2012-03-01 10:15:27

标签: asp.net c#-4.0 asp.net-ajax

我正在使用母版页,其中菜单根据代码中的用户角色动态生成。相同的菜单用于特定用户注销的所有应用程序。因此,我不需要重新创建它,而是需要为所有应用程序提供相同的菜单。 Menu在StringBuilder中,非常大。在我的情况下,会话或数据缓存是否更好,内存消耗更少以及原因。请提出建议?

我想提高母版页的性能。

由于

2 个答案:

答案 0 :(得分:1)

我认为Cache会更好,因为你只会为一个角色创建一个实例,但Session会让它创建多个用户访问的实例,并且你必须等待会话超时有时释放内存< / p>

答案 1 :(得分:0)

如果每个用户都会获得相同的菜单:

您应该考虑将其放在应用程序“缓存” - 应用程序[“MyMenu”]或其中一个对象上的静态字段中。

主要原因是终生。如果将它放在应用程序级别对象中,那么它将持续应用程序的生命周期。将它放在会话级对象中会导致它在会话结束时丢失 - 当每个用户启动一个会话时,您很快就会发现自己正在重新获取数据。

另一方面......如果每个用户都是唯一的:

该会话提供了一个放置此数据的便利位置,因为它对该用户来说是唯一的,并且不会超出该用户离开该网站的时间。

还要考虑:

如果你真的认为记忆会成为一个问题,或者你想确定你保留多长时间

将它放入缓存中。您可以确定它在缓存中的时间量,此外,缓存将在内存不足时开始转储对象 - 因此它对加载比其他选项更敏感。

Session vs Cache on SO already

进行了很好的讨论

<强> 另外

你确定你的菜单那么大吗?如果是,你可能想考虑其他选择 - 你说的有多大?