加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 每个用户输出缓存

发布时间:2020-12-15 04:00:28 所属栏目:百科 来源:网络整理
导读:你有一个记忆密集的仪表板,每个用户是不同的.如何根据当前登录的userID缓存响应,该userID不作为参数传递,但需要从当前登录的用户派生.这是我的理解VaryByParam看的请求上下文 此外,数据库中还有一个值,当更改此值时,需要重置缓存 解决方法 在您的Web.config
你有一个记忆密集的仪表板,每个用户是不同的.如何根据当前登录的userID缓存响应,该userID不作为参数传递,但需要从当前登录的用户派生.这是我的理解VaryByParam看的请求上下文

此外,数据库中还有一个值,当更改此值时,需要重置缓存

解决方法

在您的Web.config中:
<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <add name="Dashboard" duration="86400" varyByParam="*" varyByCustom="User" location="Server" />
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

在您的控制器/操作中:

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

然后在你的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将允许您编写一个自定义方法来确定是否会通过返回一个字符串来确定Cache命中/未命中,该字符串将被用作每个Cache副本的某种“哈希”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读