【问题标题】:xPage looses session when opened in multiple tabsxPage 在多个选项卡中打开时丢失会话
【发布时间】:2014-08-14 09:08:35
【问题描述】:

我们有一个非常复杂的页面,其中包含大量部分刷新,从多个来源获取数据并使用 DOJO 和 jQuery。一切正常,没有问题。 但是,当页面在不同选项卡上的同一浏览器中多次打开时,它似乎以某种方式失去了会话。部分刷新不再起作用,它继续执行 before 和 afterPageLoad。 客户端的一切仍然有效,但对服务器的任何调用最终什么都不做。 当我们非常快速地复制页面时,这种情况会发生更多,如果允许页面完全加载,问题似乎不那么频繁。 告诉浏览器不要缓存似乎会让情况变得更糟,所以它可能与过多的流量有关。 页面确实使用了很多 viewScopes 来存储数据,但没有 sessionScopes。

如果有任何提示,我们将不胜感激。

【问题讨论】:

  • “页面被多次打开” - 如何?
  • 通过在浏览器(chrome)中打开一个新标签并打开网址,或复制标签
  • 使用 firebug/developer 工具栏跟踪部分刷新的网络响应
  • 我又试了一次,这次仔细看了一下。帖子被发送(与所有功能正确时相同),服务器返回数据。然而,这与他在问题发生之前发送的最后一个数据相同。所以看起来部分刷新确实有效,但服务器返回了磨损的(旧)数据。我确实尝试了所有缓存设置,但问题仍然存在。
  • 您所说的可能是您与服务器之间的代理造成的。有代理吗?

标签: xpages


【解决方案1】:

您是在丢失 viewScope 还是整个会话? (对于需要身份验证的应用程序,在完全刷新页面时会提示您再次进行身份验证。听起来好像不会发生这种情况,但我不确定。)

Xsp 属性有一个设置来确定当前会话的每个页面在内存或磁盘中存储多少页面。因为当前会话意味着浏览器会话,所以您可能打开了太多页面,它会转储页面,因此也会为最早的选项卡转储 viewScope。即使它是相同的 URL,如果它是不同的选项卡,它也会将其视为单独的页面。保留的页数存储在 Xsp 属性的持久性选项卡上。我不记得默认值是什么,但 16 响铃。它应该记录在 XPages Portable Command Guide 和 Mastering Xpages Second Edition 中。

【讨论】:

  • 是的,整个会话由视图范围控制,我们从不进行完全刷新。当我们进行完全刷新时,没有重新认证,所以服务器会话仍然存在。我会检查页数并尝试增加它。
  • 我相信,在 8.5.3 中默认为 4,在 9.0 中默认为 16。正如 Paul 指出的那样,可能会导致数据丢失。
  • 我增加了页数,但问题依旧。正如我在另一条评论中所说,它看起来服务器确实返回了数据,但它是错误的 9previous) 数据,就好像他正在从缓存中读取它一样。所以可能部分刷新确实有效,但它总是从服务器获取相同的数据。
【解决方案2】:

看来这毕竟是页面持久性。我将其更改为 40,这次我重新启动了 HTTP 任务(上次忽略了)。 我现在可以毫无问题地加载其他页面。 现在,如果我快速加载 40 个页面,在页面完成加载之前重新加载,第一个页面停止响应。如果我“正常”加载它 40 次,一切都会正常运行。 似乎服务器无法处理快速重新加载。

【讨论】:

    猜你喜欢
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2021-04-01
    • 2018-06-07
    • 2016-04-07
    • 2011-07-27
    • 1970-01-01
    相关资源
    最近更新 更多