在我的asp.net MVC应用程序中,每个页面都包含很多很少变化的数据,但仍然是用户特定的,不应该在其他用户之间共享。
我找不到一个处理每个用户缓存的服务器端解决方案,所以我的想法是只使用'标准'内存缓存并使用用户ID作为密钥的一部分。
这可以接受吗? 我是否遗漏了一些安全隐患?
由于
编辑:(已添加详细信息)
这是最初存储在数据库中的数据,例如,我有一个定制的下拉列表(使用AJAX检索并返回jsonresult)用于产品类别。我希望能够手动清除缓存,以防用户通过设置添加类别,我需要检索“新”类别列表。据我所知,我无法使用 OutputCache 手动清除缓存。我还有一个场景,我想每分钟刷新一些缓存项目(对于用户屏幕上的一些更新)。
答案 0 :(得分:0)
使用OutputCache注释您的操作,并确保该操作仅适用于授权访问。
[Authorized, OutputCache(VaryByCustom = "USER")]
public ActionResult SlowAction() { }
然后在Global.asax.cs中覆盖' VaryByCustom'处理
public override string GetVaryByCustomString(HttpContext context, string custom)
{
switch (custom)
{
case "USER":
return context.User.Identity.Name;
default:
return null;
}
}