【问题标题】:Disabling cache on all browser在所有浏览器上禁用缓存
【发布时间】:2013-08-13 13:05:46
【问题描述】:

我正在使用 ASP.Net VB。我正在尝试通过网站禁用缓存,因为我的客户遇到了一个问题,他需要清除缓存才能使系统正常工作。

我把这一堆代码放在我的母版页page_load中。

Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache)
Response.Cache.SetNoStore()
Response.Cache.SetAllowResponseInBrowserHistory(True)

并在此处访问我的 chrome 缓存。铬://缓存/

第一个问题是,这是禁用缓存的正确方法吗?接下来是,我假设将它放在母版页上会使所有页面都受此影响,这是一个正确的假设吗?最后,我如何知道这段代码是否正常工作/我的浏览器是否仍在存储缓存以检查代码是否正确。有任何想法吗?谢谢!

【问题讨论】:

  • 你肯定会更好地弄清楚为什么你的客户需要清除他的缓存并修复它。
  • 是的。但省略了这种情况。你对我的问题有任何答案吗?谢谢!

标签: asp.net vb.net caching cross-browser


【解决方案1】:

只需一行代码即可完成工作

 Response.CacheControl = "no-cache";

但最好从缓存中删除现有页面。

Response.ExpiresAbsolute=DateTime.Now.AddDays(-1d);
Response.Expires =-1500;
Response.CacheControl = "no-cache";

您可以在页面加载时检查页面是否已过期

     protected void Page_Load(object sender, EventArgs e)
            {

            if (Page.IsPostBack)
             {
                    if (pageIsExpired()){
                       Response.Redirect("/Some_error_page.htm");
                    }
                    else {
                       var now = Now;
                       Session("TimeStamp") = now.ToString();
                       ViewState("TimeStamp") = now.ToString();
                    }
        }
}



      private boolean pageIsExpired()
      {
         if (Session("TimeStamp") == null || ViewState("TimeStamp") == null)
            return false;

         if (Session("TimeStamp") == ViewState("TimeStamp"))
            return true;

            return false;
      }

来源:http://www.codeproject.com/Articles/11225/Disabling-browser-s-back-functionality-on-sign-out

【讨论】:

  • 我尝试了这段代码并将其放在我的母版页上,然后单击返回。页面还在。
  • 是的,伙计,页面会在那里你只是禁用缓存而不是停止页面再次呈现。
  • 所以在加载时将它们放在母版页上是否可以?谢谢!
猜你喜欢
  • 2015-09-30
  • 2010-10-29
  • 1970-01-01
  • 2012-01-05
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多