Asp.net mvc 清除客户端上的outputcache

Asp.net mvc 清除客户端上的outputcache,asp.net-mvc,outputcache,Asp.net Mvc,Outputcache,正如标题所说,如何清除客户端的Outputcache?我有几个ajax调用需要在用户执行某些特定操作后清除 我试过: Response.RemoveOutputCacheItem(Url.Action("Action", "Controller")); 但它不起作用 我甚至试着按常规终止它(尽管这是一个糟糕的方法): 那也没有成功 为了清楚起见,我使用的是OutputcacheLocation=Client。如果我将其设置为Server,上面的示例将完美无瑕。您不能。一旦您将缓存位置设置为客户

正如标题所说,如何清除客户端的Outputcache?我有几个ajax调用需要在用户执行某些特定操作后清除

我试过:

Response.RemoveOutputCacheItem(Url.Action("Action", "Controller"));
但它不起作用

我甚至试着按常规终止它(尽管这是一个糟糕的方法):

那也没有成功


为了清楚起见,我使用的是
OutputcacheLocation=Client
。如果我将其设置为
Server
,上面的示例将完美无瑕。

您不能。一旦您将缓存位置设置为客户端,您就赋予了客户端管理它的责任。

如果您需要的是每次调用axax以返回不同的数据,而不管是否缓存,当使用相同的参数调用时,唯一可靠的方法是在查询字符串中添加另一个始终不同的变量,例如,时间下降到毫秒

我是这样做的(参数no_cache):


Date.prototype.getTicksUTC=function()
{
return Date.parse(this.toutString())+this.getutcmillesons();
}//结束函数getTicksUTC
Date.prototype.getTicksGMT=函数()
{
return Date.parse(this.togmString())+this.getmillizes();
}//结束函数getTicksGMT
var strURL=”http://localhost/ajax/whateverhandler.ashx?param1=value1¶2=value2¶N=valueN&no_cache=“+新日期().getTicksUTC();
警报(strURL);

如果是这样,您将如何根据不同的用户更改缓存,并且仍然允许他们更改数据?您是否可以提供一些参考,从哪里读取客户端上的缓存,而HttpResponse无法告知要清除这些缓存?谢谢,但这和把它定义为NoCache不一样吗?没有办法告诉客户端的浏览器清除缓存吗?@AdrianoRR:没有,情况会不一样。首先,客户端可以忽略NoCache。第二,其他所有东西都被缓存,只是ajax调用没有缓存。我理解你所说的,但是我想在一些特定的操作之后清除客户端的缓存。从您的示例中,我没有在ajax调用中获取缓存,因为您正在设置一个不断变化的时间戳。我相信jQuery中的$.ajax就是这么做的。我需要缓存被维护一段时间,并在我告诉它后被清除。无论如何thanks@AdrianoRR:然后继续使用相同的no_cache参数,直到需要一个新参数。现在我明白你的意思了。每当我需要更新缓存时,我只需调用
Date.prototype.getTicksUTC
并生成另一个无缓存页面,对吗?这样,我就可以“控制”客户端缓存了,对吗?我会试试这个,如果有效的话,我会把答案改成你的。
                Response.Expires = 0;
                Response.ExpiresAbsolute = DateTime.Now.AddMinutes(-1);
                Response.AddHeader("pragma", "no-cache");
                Response.AddHeader("cache-control", "private");
                Response.CacheControl = "no-cache";
<script type="text/javascript">
Date.prototype.getTicksUTC = function() 
{
    return Date.parse(this.toUTCString()) + this.getUTCMilliseconds();
} // End Function getTicksUTC


Date.prototype.getTicksGMT = function() 
{
    return Date.parse(this.toGMTString()) + this.getMilliseconds();
} // End Function getTicksGMT

var strURL= "http://localhost/ajax/whateverhandler.ashx?param1=value1&para2=value2&paraN=valueN&no_cache=" + new Date().getTicksUTC();
alert(strURL);

</script>