【问题标题】:Can you set Page Output Cache by an Individual user?您可以通过个人用户设置页面输出缓存吗?
【发布时间】:2018-09-01 14:57:50
【问题描述】:

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

有没有办法将 Menu 包装到 UserControl 中,但有刷新的持续时间,但显然输出缓存也应该基于每个用户?

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

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

【问题讨论】:

    标签: asp.net outputcache


    【解决方案1】:

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

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

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

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

    这将使每个用户缓存。

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

    【讨论】:

    • 所以要清楚......每个参数(用户)都会有一个缓存项目。还是每次新用户登录时都会清除并重置缓存?
    • 新用户登录不会破坏 VaryByParam 缓存。破坏它的持续时间。一旦持续时间结束,它就消失了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2022-08-03
    • 1970-01-01
    • 2021-02-28
    • 2014-04-15
    • 2011-01-25
    • 2020-02-06
    相关资源
    最近更新 更多