Очистка выходного кэша на стороне клиента

Как видно из названия, как я могу очистить Outputcache на стороне клиента? У меня есть несколько вызовов 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 Приведенные выше примеры работают без нареканий.

2 ответа

Решение

Если вам нужен вызов 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> 

Ты не можешь После того как вы установили расположение кэша для клиента, вы дали клиенту ответственность за управление им.

Другие вопросы по тегам