0

我有一个 xpage,其中有依赖的组合框。当我选择第一个组合框时,它会部分刷新第二个组合框,该组合框由大量关键字填充(从视图中查找大约 10K)。这个动作需要很多时间,因此我决定使用XSP.submitlatency.

因此,我创建了脚本块并添加了以下代码:

XSP.addOnLoad(function() { //increase Ajax request timeout to 35 seconds XSP.submitLatency = 35 * 1000; });

这工作正常,但所有其他部分刷新需要 15 秒。

然后我尝试使用submitlatency=15000第一个组合框而不是使用 addOnLoad()。submitlatency=2000当我单击任何其他部分刷新时,我使用了上述内容。但找不到预期的结果。页面的正常行为消失了,其他部分刷新似乎不起作用。

请帮忙 !或者建议是否有更好的替代方案来处理这个问题以提高响应时间。

4

5 回答 5

5

包含 10k 个条目的组合框是等待发生的 UX 灾难。将 Dojo 网格与本地数据源或任何其他更大的机制一起使用。本地存储是您的朋友

于 2013-06-27T12:14:27.830 回答
1

每次用户选择某项时尝试加载 10K 条目的组合框是非常糟糕的主意。即使您设法以某种方式延长超时时间,此操作仍然太繁重并且您的应用程序将无法扩展(很少有用户同时使用此组合会使应用程序屈服)。

您不应该弄乱延迟,而是更改将数据传递给组合框的方式。了解 dojo 数据存储:

http://dojotoolkit.org/reference-guide/1.9/quickstart/data/usingdatastores.html

然后找出组合框如何使用它们来检索数据。

有了这些知识,您将能够:

  • 在浏览器中缓存应用程序启动时的数据(如果数据类型非常静态 - 例如城市名称)
  • 使用 dojo 查询存储根据用户输入仅获取数据子集,并让多米诺索引完成艰苦的工作

这里有一点建议 - Domino 在处理大量数据时效率不高。您可以强制它处理数百万条记录,但这需要大量的工作和知识,因此最好在您的应用程序投入生产并停止工作之前仔细考虑这一点。

于 2013-06-27T10:58:49.277 回答
0

在 8.5.2 之前submitLatency设置为默认 6 秒。从 8.5.2 开始的默认值为 20 秒。改变XSP.submitLatency会改变一切。这也是一个超时,所以除非你的其他调用开始很慢,否则它不应该增加提交时间。

您可以尝试更改“asp.ajax.renderwholetree”,看看是否有帮助。这是对此的评论。

# This property defines if the JSF tree should be
# completely processed during the render phase,
# including the components that are not rendered. When set to false
# it gives better performance but with potential side effects
# if some components are changing data during the render phase 
# (which # should be avoided anyway)
#xsp.ajax.renderwholetree=true

此值true在 8.5.2 及更高版本中默认为。

除此之外,我建议使用XPages Toolbox来调试应用程序。培训材料包含在XPages Masterclass中:

于 2013-06-27T06:01:31.013 回答
0

处理此问题的最佳方法是使用加载屏幕/待机对话框。这可以防止用户在部分刷新期间单击其他按钮/链接/任何内容,并通知他发生了某些事情。这有助于获得更好的用户体验。

请参阅此处获取解决方案:http ://openntf.org/XSnippets.nsf/snippet.xsp?id=standby-dialog-custom-control

顺便提一句。组合框中的 10k 个关键字?作为用户,我会向开发人员开枪;-)

于 2013-06-27T06:20:17.900 回答
0

为用户提供多达 10k 个关键字是您不希望发生的事情。尤其是不在组合框内。它们不是为如此大量的数据而设计的。你不能改变设计,让第一个组合框刷新一个数据表控件,用户可以在其中选择他们想要的东西吗?在数据表上,您可以添加寻呼机,当然还有一些过滤器。有关数据选项卡的更多信息在这里

于 2013-07-01T14:32:59.517 回答