ASP.NetMVC如何在从输出缓存中移除一个具有相同虚拟绝对路径的两个页面时加以区分?
创始人
2024-09-19 06:30:32
0

在ASP.Net MVC中,可以在OutputCacheAttribute中设置Duration和VaryByParam属性来控制输出缓存的行为。但是,当两个具有相同虚拟绝对路径的页面都被缓存时,移除其中一个会导致另一个页面的缓存也被清除。

为了区分这两个页面,我们可以使用VaryByCustom属性来设置一个自定义变量。这个变量的值可以根据页面的内容动态生成。如果两个页面的内容不同,它们的自定义变量值也会不同。这会导致它们被缓存为两个不同的项,因此移除其中一个页面不会影响另一个页面的缓存。

以下是一个示例代码,演示如何使用VaryByCustom属性来设置自定义变量:

[OutputCache(Duration = 3600, VaryByParam = "none", VaryByCustom = "myCustomVar")]
public ActionResult MyAction()
{
    // ... action code ...
}

public override string GetVaryByCustomString(HttpContext context, string arg)
{
    if (arg == "myCustomVar")
    {
        // generate a unique value based on the page content
        // this can be any string that changes depending on the page content
        return "myUniqueValue123";
    }
    return base.GetVaryByCustomString(context, arg);
}

在上面的示例中,我们为输出缓存属性设置了一个自定义变量myCustomVar。我们还覆盖了GetVaryByCustomString方法,该方法在生成缓存键时调用。在这个方法中,我们返回了一个基于页面内容生成的唯一字符串,作为customVar参数的值。由于这个值是根据页面内容动态生成的,因此具有相同虚拟路径但内容不同的两个页面会有不同的自定义变量值,从而得到不同的缓存键,缓存将分别缓存这两个页面。

这种方式可以解决两个具有相同虚拟绝对路径但内容不同的页面被缓存为同一个项的问题,使它们可以分别缓存。移除其中一个也不会影响另

相关内容

热门资讯

黑科技科技(wepoke智能a... 黑科技科技(wepoke智能ai)wepower使用说明书(wepOkE)素来是真的有挂(确实有挂)...
黑科技模拟器(wepoke智能... WePoker透视辅助工具核心要点解析‌,黑科技模拟器(wepoke智能ai)wepoke是机器发牌...
黑科技脚本(wepokeai代... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款游戏中打牌都...
黑科技辅助挂(wepoke真的... 黑科技辅助挂(wepoke真的有挂)wepoke 软件(wEPOKE)固有真的有挂(有挂猫腻)-哔哩...
黑科技辅助挂(wepoke黑科... 黑科技辅助挂(wepoke黑科技)wepoke软件透明挂演示(wEpOke)一直真的有挂(真的有挂)...
黑科技app(wepoke真的... 此外,数据分析德州()辅助神器app还具备辅助透视行为开挂功能,通过对客户透明挂的深入研究,你可以了...
黑科技智能ai(wepoke辅... 黑科技智能ai(wepoke辅助插件)wepoke软件透明(WEPOke)先前是有挂(果真有挂)-哔...
黑科技模拟器(wepoke透明... 黑科技模拟器(wepoke透明黑科技)wepoke德州扑克用ai代打(WEPOKE)最初存在有挂(有...
黑科技插件(wepoke辅助插... 黑科技插件(wepoke辅助插件)wepoke软件透明(WEPOke)从来是真的有挂(有挂解惑)-哔...
黑科技美元局(wepoke智能... 黑科技美元局(wepoke智能ai)wepoke辅助真的假的(wepoKE)原先真的有挂(竟然有挂)...