gpt4 book ai didi

asp.net - 如何以编程方式清除 Controller 操作方法的输出缓存

转载 作者:行者123 更新时间:2023-12-03 05:39:35 25 4
gpt4 key购买 nike

如果 Controller 操作在操作上指定了 OutputCache 属性,是否有任何方法可以清除输出缓存而无需重新启动 IIS?

[OutputCache (Duration=3600,VaryByParam="param1;param2")]
public string AjaxHtmlOutputMethod(string param1, string param2)
{
var someModel = SomeModel.Find( param1, param2 );

//set up ViewData
...

return RenderToString( "ViewName", someModel );
}

我正在考虑使用 HttpResponse.RemoveOutputCacheItem(string path) 来清除它,但我无法确定将其映射到操作方法的路径应该是什么。我将再次尝试使用 ViewName 呈现的 aspx 页面。

如果我无法弄清楚这一点,我可能会手动将 RenderToString 的输出插入到 HttpContext.Cache 中。

更新

请注意,OutputCache 是 VaryByParam,测试硬编码路径“/controller/action”实际上并不会清除输出缓存,因此看起来它必须匹配“/controller/action/param1/param2”。

这意味着我可能必须恢复到对象级缓存并手动缓存 RenderToString() 的输出:(

最佳答案

试试这个

var urlToRemove = Url.Action("AjaxHtmlOutputMethod", "Controller");
HttpResponse.RemoveOutputCacheItem(urlToRemove);

更新:

var requestContext = new System.Web.Routing.RequestContext(
new HttpContextWrapper(System.Web.HttpContext.Current),
new System.Web.Routing.RouteData());

var Url = new System.Web.Mvc.UrlHelper(requestContext);

更新:

试试这个:

[OutputCache(Location= System.Web.UI.OutputCacheLocation.Server, Duration=3600,VaryByParam="param1;param2")]

否则缓存删除将不起作用,因为您已经在用户计算机上缓存 HTML 输出

关于asp.net - 如何以编程方式清除 Controller 操作方法的输出缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1167890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com