本文介绍了如何在asp中强制清除缓存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在asp中强制清除缓存
How to force clear cache in asp
推荐答案Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetNoStore();
将此代码放入页面加载。现在缓存浏览器中没有数据会尝试从serv获取页面
Put this code in page load. Now there will be no data in cache browser will try to get the page from the serv
我试试这个但是看起来不行吗 public void DisablePageCaching() { //用于禁用页面缓存 HttpContext.Current.Response.Cache.SetExpires( DateTime.UtcNow.AddDays(-1)); HttpContext.Current.Response.Cache.SetValidUntilExpires(false); HttpContext.Current.Response.Cache.SetRevalidation( HttpCacheRevalidation.AllCaches); HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); HttpContext.Current.Response.Cache.SetNoStore(); HttpContext.Current.Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1)); } private void ClearCache() { DictionaryEntry entry = default(DictionaryEntry); foreach(System.Web.HttpContext.Current.Cache中的DictionaryEntry entry_loopVariable) { entry = entry_loopVariable; System.Web.HttpContext.Current.Cache.Remove(entry.Key.ToString()); } IDictionaryEnumerator enumerator = HttpContext.Current.Cache.GetEnumerator(); while(enumerator.MoveNext()) { HttpContext.Current.Cache.Remove(enumerator.Key.ToString()); } HttpContext.Current.Response.ClearHeaders(); HttpContext.Current.Response.Expires = 0; HttpContext .Current.Response.CacheControl =no-cache; HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache); HttpContext.Current.Response。 Cache.SetNoStore(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now.Subtract(new TimeSpan(1 ,0,0,0)); HttpContext.Current.Response.AppendHeader(Pragma,no-cac他); HttpContext.Current.Response.AppendHeader(,); HttpContext.Current.Response.AppendHeader(Cache-Control,no-cache); // HTTP 1.1 HttpContext.Current.Response.AppendHeader(Cache-Control,private); // HTTP 1.1 HttpContext.Current.Response.AppendHeader(Cache-Control,no-store); // HTTP 1.1 HttpContext.Current.Response.AppendHeader(Cache-Control,must-revalidate); // HTTP 1.1 HttpContext.Current.Response.AppendHeader(Cache-Control,max-stale = 0); // HTTP 1.1 HttpContext.Current.Response.AppendHeader(Cache-Control,post-check = 0); // HTTP 1.1 HttpContext.Current.Response.AppendHeader(Cache-Control,pre-check = 0); // HTTP 1.1 HttpContext.Current.Response.AppendHeader(Pragma,no-cache); // HTTP 1.1 HttpContext.Current.Response.AppendHeader(Keep-Alive,timeout = 3,max = 993); // HTTP 1.1 } i try this but it seems not working public void DisablePageCaching() { //Used for disabling page caching HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); HttpContext.Current.Response.Cache.SetValidUntilExpires(false); HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); HttpContext.Current.Response.Cache.SetNoStore(); HttpContext.Current.Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1)); } private void ClearCache() { DictionaryEntry entry = default(DictionaryEntry); foreach (DictionaryEntry entry_loopVariable in System.Web.HttpContext.Current.Cache) { entry = entry_loopVariable; System.Web.HttpContext.Current.Cache.Remove(entry.Key.ToString()); } IDictionaryEnumerator enumerator = HttpContext.Current.Cache.GetEnumerator(); while (enumerator.MoveNext()) { HttpContext.Current.Cache.Remove(enumerator.Key.ToString()); } HttpContext.Current.Response.ClearHeaders(); HttpContext.Current.Response.Expires = 0; HttpContext.Current.Response.CacheControl = "no-cache"; HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache); HttpContext.Current.Response.Cache.SetNoStore(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.ExpiresAbsolute =DateTime.Now.Subtract(new TimeSpan(1,0,0,0)); HttpContext.Current.Response.AppendHeader("Pragma", "no-cache"); HttpContext.Current.Response.AppendHeader("", ""); HttpContext.Current.Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1 HttpContext.Current.Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1 HttpContext.Current.Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1 HttpContext.Current.Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1 HttpContext.Current.Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1 HttpContext.Current.Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1 HttpContext.Current.Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1 HttpContext.Current.Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1 HttpContext.Current.Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1 }
如果你想设置当前页面的清除缓存,那么在按钮点击和页面加载时写下面的代码,它会工作对我来说。 HttpResponse.RemoveOutputCacheItem(/ pagecontentdetail.aspx) If you want set clear cache of current page then write below code on button click as well as on page load, It will work for me. HttpResponse.RemoveOutputCacheItem("/pagecontentdetail.aspx")
更多推荐
如何在asp.net中强制清除缓存
发布评论