gpt4 book ai didi

asp.net-mvc - MVC3 自定义输出缓存

转载 作者:行者123 更新时间:2023-12-04 17:12:52 25 4
gpt4 key购买 nike

我想在我的应用程序中使用缓存,但我返回的数据是特定于登录用户的。当我需要因用户而异时,我不能使用任何开箱即用的缓存规则。

有人可以指出我创建自定义缓存属性的正确方向吗?从 Controller 我可以从 Thread.CurrentPrincipal.Identity; 访问用户或我在 Controller 构造函数中初始化的私有(private) Controller 成员 _user
谢谢你。

最佳答案

您可以使用 VaryByCustom。在 Global.asax 中覆盖 GetVaryByCustomString方法:

public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (arg == "IsLoggedIn")
{
if (context.Request.Cookies["anon"] != null)
{
if (context.Request.Cookies["anon"].Value == "false")
{
return "auth";
}
else
{
return "anon";
}
}
else
{
return "anon";
}
}
else
{
return base.GetVaryByCustomString(context, arg);
}
}

然后使用 OutputCache 属性:
[OutputCache(CacheProfile = "MyProfile")]
public ActionResult Index()
{
return View();
}

在 web.config 中:
<caching> 
<outputcachesettings>
<outputcacheprofiles>
<clear />
<add varybycustom="IsLoggedIn" varybyparam="*" duration="86400" name="MyProfile" />
</outputcacheprofiles>
</outputcachesettings>
</caching>

关于asp.net-mvc - MVC3 自定义输出缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5590183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com