【问题标题】:Action class called twice from IE and not firefox从 IE 而不是 firefox 调用了两次操作类
【发布时间】:2013-09-12 21:07:13
【问题描述】:

我有一个应用程序,其中一个绝对正常的链接(如下所示).. 单击时,会调用操作类两次。而这种行为只发生在 IE 中。在 Firefox 中,当我点击同一个链接时,它只调用一次动作类。

<a href="FileListAction.do"  title="Load"  target="_parent" id="c">Load</a>

这是一个较旧的应用程序,我使用的是 Struts 1.3 和 Tiles。 知道为什么会发生这种情况和/或如何排除故障吗?

【问题讨论】:

  • 可能是 IE 正在预加载链接。记录收到请求的时间。加载页面,等待约 10 秒,然后单击链接。如果日志条目之间的差异约为 10 秒,则为预加载。尝试确保指向您的 servlet 的链接不是页面中的第一个链接。
  • Devon,我发布的链接不是页面上的第一个链接。但是,页面上的每个链接都会发生这种行为。能否请您解释一下有关预加载以及如何测试它的更多信息。

标签: java internet-explorer firefox struts


【解决方案1】:

可能是 IE 正在 预加载 prefetching 链接。

要验证这一点,请记录收到请求的时间。加载页面,等待约 10 秒,然后单击链接。如果日志条目之间的差异约为 10 秒,则为预取。

这个想法是浏览器预加载用户可能点击的链接,因此结果可以立即从浏览器缓存中得到服务器。

HTML5 通过定义rel="prefetch" 来明确这一点。可以在a、area 和link 标签上设置此属性和值。

在HEAD 元素中检查您的页面是否有&lt;link rel="prefetch" href="url" /&gt; 或&lt;link rel="next" href="url" /&gt;。此外,请检查您的 A 标签是否还有 rel 属性。

微软声称officially support this in IE 11。

所有这些都是为了让页面看起来更能响应用户。当被检索的页面不可缓存时,这可能会崩溃。这将导致当用户单击该页面时再次获取该页面。这可以通过采取措施确保结果可缓存来改进。设置适当的cache headers。有一个Private 缓存控件用于针对单个收件人的内容。它只存储在私有缓存中,通常是用户的浏览器。

此外,如果您的页面不提供 Content-length 标头,则可能无法将其视为可缓存。

【讨论】:

    猜你喜欢
    • 2015-07-10
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 2010-09-21
    • 2022-12-09
    • 1970-01-01
    相关资源
    最近更新 更多