0

我们有一个站点,我们在其中 Response.Redirect 到一个页面(购物车页面),并且由于某种原因,在使用 IE8 时没有为该页面调用 Page_Init 和 Page_Load 函数。即使我将光标放在 URL 栏中并按 Enter,它们仍然没有被调用。当我按 F5 时,它被调用。当我使用另一个浏览器(包括 IE8 模式下的 IE9)时,它们会被调用。我运行 Fiddler2 来检查流量,当我单击 URL 栏并按 Enter 键时没有出现流量,即使您看到世界图标旋转并且它似乎正在做 1/2 秒的事情。

什么可能导致这种行为?似乎它必须是 Javascript 和/或拦截 Page_Load 的更新面板。

细节:该网站是 AbleCommerce,页面是购物车页面。我们已经定制了产品选择流程。

我能够在我们的站点测试实例上复制问题,因此我将断点添加到加载购物车的自定义控件的 Page_Init 和 Page_Load 函数中。在 IE8 下,我可以将光标放在 IE8 的 url 栏并按回车,断点永远不会被击中。任何其他浏览器,他们都会受到打击。在 IE8 浏览器模式下运行 IE9,他们会受到打击。但是在 IE8 中,它们只有在我刷新 (F5) 时才会受到影响。

我认为这必须是 Javascript 或更新面板问题。Firefox 错误控制台或 IE8 中没有显示 Javascript 错误。

关于可能导致这种情况的任何想法?或者我该如何解决它?

4

3 回答 3

1

尝试使用额外的参数调用您的页面,例如&_=xyzwherexyz总是新鲜的(例如当前时间 tostring)。如果使用额外参数刷新页面,则您会遇到浏览器缓存过于激进的缓存问题。

为什么会这样——很难说。这可能是一个 jquery 问题,您在启用完全缓存的情况下调用 url,然后浏览器在内部获取缓存设置并且从不回调您的页面。

于 2012-05-08T19:45:21.203 回答
1

当前接受的答案是调试此问题的好方法。但是解决这个问题的一个更好的方法是,你应该在响应中设置 HTTP 标头,告诉浏览器它不应该缓存它。

查看此 Stack Overflow 问题的已接受答案,了解如何在最流行的语言中设置缓存标头: 确保在所有浏览器中不缓存网页

于 2014-03-23T01:14:41.227 回答
0

我遇到了完全相同的问题...这是因为 IE 中的大量缓存选项。因此,我没有使用随机变量,而是将所有响应缓存设置为 false,每次回发,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
        Response.Cache.SetNoStore();
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.Now);
        Response.Cache.SetLastModified(DateTime.Now);
        Response.Cache.SetAllowResponseInBrowserHistory(false);
        ....
}

来源:在 Firefox 中调用 Page_Load,但不是 IE

于 2012-11-19T20:35:31.130 回答