如何配置每个用户mvc的输出缓存?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (66)

我有一个用户特定的仪表板。我想仪表板会每天更换,我想用MVC's OutputCache。有没有办法配置每个用户的缓存,并在请求时过期?

提问于
用户回答回答于

在web.config中尝试这个,

<system.web>
 ...........
 ...........
 <caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <add name="UserCache" duration="1440" varyByParam="UserID" enabled="true" location="Client"/>
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>
用户回答回答于

在你的Web.config:

<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <add name="Dashboard" duration="86400" varyByParam="*" varyByCustom="User" location="Server" />
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

在你的Controller/Action:

[OutputCache(CacheProfile="Dashboard")]
public class DashboardController { ...}

然后在你的Global.asax:

//string arg filled with the value of "varyByCustom" in your web.config
public override string GetVaryByCustomString(HttpContext context, string arg)
{
    if (arg == "User")
        {
        // depends on your authentication mechanism
        return "User=" + context.User.Identity.Name;
        //return "User=" + context.Session.SessionID;
        }

    return base.GetVaryByCustomString(context, arg);
}

GetVaryByCustomString允许你编写自定义方法以确定是否存在缓存。hit/miss...

扫码关注云+社区

领取腾讯云代金券