ERR_CACHE_MISS 导航回 ASPX 页面时
ERR_CACHE_MISS when navigating back to an ASPX page
我有一个 WebForms 应用程序,其中第一页基本上是一个网格,其中包含指向加载 PDF 查看器的第二页的链接。网格实际上位于 .ascx 控件中。从第一页到 PDF 查看器页面,一切正常。但是,当我点击后退按钮 return 到第一页时。我收到以下错误(在 Chrome 中,但在其他浏览器中也会发生):
如果我单击后退按钮,浏览器 return 会转到第一页,一切正常,但我需要解决此错误。
我已经尝试根据 this Whosebug answer 的建议在第一页中禁用缓存,如下所示:
Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.
我也试过这个:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.MinValue);
我已将此代码放在.aspx 页面的代码后面和.ascx 控件中(在OnInit 方法中),但都无济于事。我在这里错过了什么?
正如@JJS 所暗示的那样,听起来您正在使用 OnClick(可能通过 LinkButton 或 ImageButton),这会导致 partial/full post返回并且您的重定向发生在代码隐藏中。如果这是正确的,是否有您不使用超链接的原因?
缓存处理不是解决办法。浏览器显示页面之间发生 post。
覆盖 OnPreInit 方法并在 Response 对象上设置各种与缓存相关的属性,以防止浏览器缓存页面。
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
Response.Expires = -1500;
Response.CacheControl = "no-cache";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
您可以执行类似禁用浏览器页面缓存的操作,如下所示:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(Now.AddSeconds(-1));
Response.Cache.SetNoStore();
Response.AppendHeader("Pragma", "no-cache");
我有一个 WebForms 应用程序,其中第一页基本上是一个网格,其中包含指向加载 PDF 查看器的第二页的链接。网格实际上位于 .ascx 控件中。从第一页到 PDF 查看器页面,一切正常。但是,当我点击后退按钮 return 到第一页时。我收到以下错误(在 Chrome 中,但在其他浏览器中也会发生):
如果我单击后退按钮,浏览器 return 会转到第一页,一切正常,但我需要解决此错误。
我已经尝试根据 this Whosebug answer 的建议在第一页中禁用缓存,如下所示:
Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.
我也试过这个:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.MinValue);
我已将此代码放在.aspx 页面的代码后面和.ascx 控件中(在OnInit 方法中),但都无济于事。我在这里错过了什么?
正如@JJS 所暗示的那样,听起来您正在使用 OnClick(可能通过 LinkButton 或 ImageButton),这会导致 partial/full post返回并且您的重定向发生在代码隐藏中。如果这是正确的,是否有您不使用超链接的原因?
缓存处理不是解决办法。浏览器显示页面之间发生 post。
覆盖 OnPreInit 方法并在 Response 对象上设置各种与缓存相关的属性,以防止浏览器缓存页面。
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
Response.Expires = -1500;
Response.CacheControl = "no-cache";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
您可以执行类似禁用浏览器页面缓存的操作,如下所示:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(Now.AddSeconds(-1));
Response.Cache.SetNoStore();
Response.AppendHeader("Pragma", "no-cache");