有没有办法在使用 VaryByCustom 时有选择地刷新 OutputCache 条目?

问题描述

OutputCache 用于缓存单个操作方法:

[OutputCache(Duration = 300,VaryByParam = "None",VaryByCustom = "List-User-Page")]

public override string GetVaryByCustomString(HttpContext context,string arg)
{
    if (arg.Equals("List-User-Page",StringComparison.InvariantCultureIgnoreCase))
    {
        string page = Request.Params["page"] == null ? "1" : Request.Params["page"];
        string psize = Request.Params["psize"] == null ? "20" : Request.Params["psize"];
        string orderby = Request.Params["orderby"] == null ? "RequirementID" : Request.Params["orderby"];
        string sortby = Request.Params["sortby"] == null ? "DESC" : Request.Params["sortby"];
        var user = context.User.Identity.Name;
        string parameters = user + "-" + page + "-" + psize + "-" + orderby + "-" + sortby;
        return parameters;
    }

    return base.GetVaryByCustomString(context,arg);
}

缓存工作正常,但要求必须通过单击按钮来更新缓存。 utilizing Response.RemoveOutputCacheItem(item) 等解决方案过于宽泛;删除一个页面的条目似乎会删除所有用户的条目。

Alex Yumashev has seemingly found a way to remove all keys,虽然它看起来是一个,如果没有额外的信息,将不得不猜测条目以删除相关的条目。除了前面的数字和/或字母外,具有变体的页面的键似乎相同。

我还查看了建议的解决方案 involving cookies,尽管 a custom provider would be needed;至少在某些原因上是这样。

我是否已经用完了所有开箱即用的功能方法?自定义提供程序是合乎逻辑的下一步吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...