如何使用OutputCacheAttribute手动运行方法
本文关键字:运行 方法 何使用 OutputCacheAttribute | 更新日期: 2023-09-27 18:25:37
我有方法:
[HttpGet]
[OutputCache(Duration = 300, Location = OutputCacheLocation.Client)]
public JsonResult TopNotification(Guid? portalIdentifier, string url)
{
var notificationMessages = new List<NotificationModel>();
//Filling notification messages
return Json(notificationMessages, JsonRequestBehavior.AllowGet);
}
从基本布局调用:@Html.Partial("TopNotification")
当缓存持续时间结束前发生某些操作时,我需要重写notificationMessages。当用户转到某个URL时,我需要重新填充消息。
如果在服务器端移动缓存,则可以使用OutputCache的VaryByParam属性来存储缓存版本信息。然后在Global.asax中重写GetVaryByCustomString并返回缓存的当前版本。
每次访问重置URL时,都可以提高缓存的版本,从而使输出缓存无效。
示例:
[OutputCache(Duration = 300, Location = OutputCacheLocation.Server, VaryByCustom = "cache")]
public JsonResult TopNotification(Guid? portalIdentifier, string url) {...}
在Global.asax:
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom.Equals("cache"))
return Cache.Version; // something like that
return base.GetVaryByCustomString(context, custom);
}
访问重置URL时,请提升缓存的版本。所有后续的TopNotification调用都将获得新数据。