我正在使用母版页,其中菜单根据代码中的用户角色动态生成。相同的菜单用于特定用户注销的所有应用程序。因此,我不需要重新创建它,而是需要为所有应用程序提供相同的菜单。 Menu在StringBuilder中,非常大。在我的情况下,会话或数据缓存是否更好,内存消耗更少以及原因。请提出建议?
我想提高母版页的性能。
由于
答案 0 :(得分:1)
我认为Cache会更好,因为你只会为一个角色创建一个实例,但Session会让它创建多个用户访问的实例,并且你必须等待会话超时有时释放内存< / p>
答案 1 :(得分:0)
如果每个用户都会获得相同的菜单:
您应该考虑将其放在应用程序“缓存” - 应用程序[“MyMenu”]或其中一个对象上的静态字段中。
主要原因是终生。如果将它放在应用程序级别对象中,那么它将持续应用程序的生命周期。将它放在会话级对象中会导致它在会话结束时丢失 - 当每个用户启动一个会话时,您很快就会发现自己正在重新获取数据。
另一方面......如果每个用户都是唯一的:
该会话提供了一个放置此数据的便利位置,因为它对该用户来说是唯一的,并且不会超出该用户离开该网站的时间。
还要考虑:
如果你真的认为记忆会成为一个问题,或者你想确定你保留多长时间
将它放入缓存中。您可以确定它在缓存中的时间量,此外,缓存将在内存不足时开始转储对象 - 因此它对加载比其他选项更敏感。
对Session vs Cache on SO already
进行了很好的讨论<强> 另外 强>
你确定你的菜单那么大吗?如果是,你可能想考虑其他选择 - 你说的有多大?