3

正如标题所说,我怎样才能清除客户端的输出缓存?在用户执行某些特定操作后,我有几个需要清除的 ajax 调用。

我试过:

Response.RemoveOutputCacheItem(Url.Action("Action", "Controller"));

但它没有用。

我什至尝试手动将其过期(即使这是一个不好的方法):

                Response.Expires = 0;
                Response.ExpiresAbsolute = DateTime.Now.AddMinutes(-1);
                Response.AddHeader("pragma", "no-cache");
                Response.AddHeader("cache-control", "private");
                Response.CacheControl = "no-cache";

那也没有成功。

为了清楚起见,我正在使用OutputcacheLocation = Client. 如果我将其设置为Server上面的示例,则可以完美地工作。

4

2 回答 2

3

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

这是我的做法(参数 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> 
于 2012-04-11T16:12:02.120 回答
-2

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

于 2012-04-11T14:13:39.150 回答