您可以由个人用户设置页面输出缓存吗?

时间:2018-03-23 01:35:11

标签: asp.net outputcache

我有一个母版页面,它有一个相当简单的菜单系统。可用的菜单项基于登录用户。但是,数据库调用确定此逻辑超过一秒钟,这可能对我来说太长了。

有没有办法将菜单包装到UserControl中,但是还有一段时间需要刷新,但显然输出缓存也应该基于每个用户?

我知道另一种解决方案是为每个用户缓存数据,然后重建,但我认为更有效的起点是页面输出缓存。

请注意,此应用程序也不会使用会话状态。

1 个答案:

答案 0 :(得分:2)

您可以查看页面输出缓存的VaryByParam方法。

当您的用户登录时,向您的网页添加查询字符串,例如page.aspx?uid=x123

然后将以下内容添加到您的页面中:

<%@ OutputCache Duration="10800" VaryByParam="uid" %>

这将使每个用户缓存。

请记住:
即使您将您的用户作为查询字符串,仍然进行验证,即它是登录的同一用户,以避免用户通过简单地更改查询字符串来窥视彼此的视图。