首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >配置每个用户的输出缓存mvc

配置每个用户的输出缓存mvc
EN

Stack Overflow用户
提问于 2013-06-13 14:18:11
回答 2查看 4.6K关注 0票数 18

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

我对此进行了研究,发现可以扩展OutputCache属性来动态设置持续时间,但是如何为每个用户配置该属性?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-13 15:30:02

在你的Web.config

代码语言:javascript
复制
<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <add name="Dashboard" duration="86400" varyByParam="*" varyByCustom="User" location="Server" />
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

Controller/Action

代码语言:javascript
复制
[OutputCache(CacheProfile="Dashboard")]
public class DashboardController { ...}

然后在你的Global.asax

代码语言:javascript
复制
//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

票数 28
EN

Stack Overflow用户

发布于 2013-06-13 15:18:13

在web.config中尝试一下,

代码语言:javascript
复制
<system.web>
 ...........
 ...........
 <caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <add name="UserCache" duration="1440" varyByParam="UserID" enabled="true" location="Client"/>
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17080416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档