【发布时间】:2010-11-13 03:57:27
【问题描述】:
如果控制器动作在动作上指定了 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”并不会真正清除 outputcache,因此看起来它必须匹配“/controller/action/param1/param2”。
这意味着我可能不得不恢复到对象级缓存并手动缓存 RenderToString() 的输出:(
【问题讨论】:
-
尝试将
location="Server"添加到OutputCache属性 - 你不能从服务器清除客户端的缓存
标签: asp.net asp.net-mvc