MVC控制器加了 [ResponseCache(Duration = 31536000.. 想清空怎么做呢? 返回

C#论坛 老数据
4 1923

数据更新了,想更新这个页面的缓存,但网上找了个遍没发现有关的方法,用其他的又不想,只想用这个微软自带的,因为这只是相当于前端的页面!

怎么办,高人有方法吗,谢谢指点!


完整 代码如下:

 [ResponseCache(Duration = 31536000, VaryByQueryKeys = new[] { "pageIndex" })]

        [HttpGet("singer/{pageIndex}")]
        public IActionResult sitemap(int pageIndex)
        {
            Dictionary<string, object> parameters = new();
            parameters.Add("pageIndex", pageIndex);
            parameters.Add("pageSize", 99);

            JObject j = Common.GetUrlData.Client_Post(parameters, Common.Constants.apiUrl + "/api/www/singer/GetSingerList").Result;
            if (j["returnCode"].ToInt32() != 200)
                return Ok(JsonHelper.OutErr(4000, "歌手不存在"));
            else
            {
                ViewBag.listData = j["data"]["list"];
                ViewBag.pageIndex =pageIndex;
                ViewBag.total=j["data"]["total"].ToInt32();
                ViewBag.SingerCover = "/assets/img/banner/banner1.jpg";


            }
                
            return View();
        }


热忱回答4

  • fate sta fate sta VIP0
    2022/4/26

    ?id=随机数

    0 回复
  • @fate sta:你意思,再加一个参机参数?

    0 回复
  • 只能重启服务器?

    0 回复
  • fate sta fate sta VIP0
    2023/2/10

    如果想清除控制器上加了ResponseCache特性的缓存,可以使用以下几种方法:


    在控制器上添加 ResponseCache 特性的 Location 参数:

    [ResponseCache(Duration = 31536000, Location = ResponseCacheLocation.None)]

    这样的话缓存的数据不会被存储到服务器上,从而避免了清空缓存的问题。


    在视图中使用 @NoStore 特性:

    @NoStore

    这将禁用当前视图的缓存。


    使用代码在控制器中清除缓存:

    Response.Headers["Cache-Control"] = "no-cache, no-store, must-revalidate";
    Response.Headers["Pragma"] = "no-cache";
    Response.Headers["Expires"] = "0";

    这段代码将在控制器中清除缓存。


    请根据您的需求选择适当的方法。


    0 回复