Как принудительно очистить кэш в asp.net
Как принудительно очистить кэш в asp.net
я пробую это сделать, но, похоже, ничего не получается
общественного недействительными DisablePageCaching()
{
// Используется для отключения кэширования страниц
Свойство HttpContext.Тока.Ответ.Кэш.SetExpires(DateTime.UtcNow.AddDays(-1));
Свойство HttpContext.Тока.Ответ.Кэш.SetValidUntilExpires (false);
Свойство HttpContext.Тока.Ответ.Кэш.SetRevalidation(HttpCacheRevalidation.AllCaches);
Свойство HttpContext.Тока.Ответ.Кэш.SetCacheability (HttpCacheability.NoCache);
Свойство HttpContext.Тока.Ответ.Кэш.SetNoStore();
Свойство HttpContext.Тока.Ответ.Кэш.SetExpires(DateTime. Now. AddSeconds(-1));
}
команды clearcache частный недействительными ()
{
Запись DictionaryEntry = default(DictionaryEntry);
foreach (DictionaryEntry entry_loopVariable in System.Web.HttpContext.Current.Кэш)
{
запись = entry_loopVariable;
Системы.Веб.Свойство HttpContext.Тока.Кэш.Удалить (entry. Key.ToString());
}
IDictionaryEnumerator перечислитель = свойство HttpContext.Тока.Кэш.Метод getenumerator();
в то время как (перечислитель.метод MoveNext())
{
Свойство HttpContext.Тока.Кэш.Удалить (enumerator. Key.ToString());
}
Свойство HttpContext.Тока.Ответ.ClearHeaders();
Свойство HttpContext.Тока.Response. Expires = 0;
Свойство HttpContext.Тока.Ответ.CacheControl = " no-cache";
Свойство HttpContext.Тока.Ответ.Кэш.SetCacheability (HttpCacheability.ServerAndNoCache);
Свойство HttpContext.Тока.Ответ.Кэш.SetNoStore();
Свойство HttpContext.Тока.Ответ.Буфер = true;
Свойство HttpContext.Тока.Ответ.ExpiresAbsolute =Датавремя.Сейчас.Вычитание(новый промежуток времени(1,0,0,0));
Свойство HttpContext.Тока.Ответ.AppendHeader ("Pragma", " no-cache");
Свойство HttpContext.Тока.Ответ.AppendHeader("", "");
Свойство HttpContext.Тока.Ответ.AppendHeader ("Cache-Control", "no-cache"); / / HTTP 1.1
Свойство HttpContext.Тока.Ответ.AppendHeader ("Cache-Control", "private"); / / HTTP 1.1
Свойство HttpContext.Тока.Ответ.AppendHeader ("Cache-Control", "no-store"); / / HTTP 1.1
Свойство HttpContext.Тока.Ответ.AppendHeader ("Cache-Control", "must-revalidate"); / / HTTP 1.1
Свойство HttpContext.Тока.Ответ.AppendHeader ("Cache-Control", "max-stale=0"); / / HTTP 1.1
Свойство HttpContext.Тока.Ответ.AppendHeader ("Cache-Control", "post-check=0"); / / HTTP 1.1
Свойство HttpContext.Тока.Ответ.AppendHeader ("Cache-Control", "pre-check=0"); / / HTTP 1.1
Свойство HttpContext.Тока.Ответ.AppendHeader ("Pragma", "no-cache"); / / HTTP 1.1
Свойство HttpContext.Тока.Ответ.AppendHeader ("Keep-Alive", "timeout=3, max=993"); / / HTTP 1.1
}
Вы должны использовать код строк,который я дал При загрузке каждой страницы.что будет делать этот код строк, Если вы находитесь на странице загрузки одной страницы, он удалит данные кэша предыдущей страницы.
< script type= "text/javascript">
<!--
проблемы функции () {
var clocktime = новая дата();
var utchours = clocktime. getUTCHours();
var utcminutes = clocktime. getUTCMinutes();
var utcseconds = clocktime. getUTCSeconds();
var utcyear = clocktime. getUTCFullYear();
var utcmonth = clocktime. getUTCMonth()+1;
var utcday = clocktime. getUTCDate();
if (utchours < 10) { utchours = "0" + utchours }
if (utcminutes < 10) { utcminutes = "0" + utcminutes }
if (utcseconds < 10) { utcseconds = "0" + utcseconds }
if (utcmonth < 10) { utcmonth = "0" + utcmonth }
if (utcday < 10) { utcday = "0" + utcday }
var utctime = utcyear + utcmonth + utcday;
utctime += utchours + utcminutes + utcseconds;
x = utctime
жизнью = собственн.расположение.слишком
если(!жизнью.матч('#','х')) {
самостоятельно.расположение.заменить(жизнью + '#' + х)
}
}
//-->
< / script>
< / head>
& lt;body onLoad= "reloadIt ()" >
Попробуй:
1. Установите кэш
Cache[ "username" ] = "username"; Cache[ "password" ] = "password";
if( Cache[ "username" ] != null && Cache[ "password" ] != null ) { //cache is still alive String username = Cache[ "username" ].ToString(); String password= Cache[ "password" ].ToString(); } else { //show error, cache objects do not exist! }
Cache[ "username" ] = null; Cache[ "password" ] = null;
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetNoStore();
это не работает
Если вы хотите установить очистку кэша текущей страницы, то напишите ниже код при нажатии кнопки, а также при загрузке страницы, он будет работать для меня.
Объект HttpResponse.RemoveOutputCacheItem("/pagecontentdetail.aspx-файл")
Почему вы отвечаете на вопросы 3-летней давности?? - НЕ НАДО!
Почему не отвечает на 3-летний вопрос Дэйв???
Такие люди, как я, приходят сюда, гуглят эту проблему (это один из первых результатов поиска), поэтому очень полезно иметь обновленные ответы - и они предназначены не только для Т. О..
Потому что то, что подходит для одной версии ASP.NET возможно, он не подходит для более новых версий.
Кроме того, этот ответ не дает вам никакого контроля над политикой кэширования. Вместо этого это "убийство одним выстрелом" для всей страницы. Более распространенным является кэширование страницы, но не определенных элементов на странице, таких как таблицы данных.
Попробуй:
1. Установите кэш
Кэш ["username"] = " username";
Кэш ["пароль"] = " пароль";
2. Используйте кэш
if (Cache ["username" ] != null && Cache ["password"] ! = null )
{
// кэш все еще жив
String username = Cache ["username" ]. ToString();
String password= Cache ["password" ]. ToString();
}
ещё
{
//show error, объекты кэша не существуют!
}
3. Очистить кэш
Кэш.Удалить ("имя пользователя");
Кэш.Удалить ("пароль");