寻求XSP提交延迟的解决方案

时间:2013-06-27 05:26:46

标签: xpages xpages-ssjs

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

所以,我创建了scriptblock并添加了这段代码:

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

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

然后我尝试在第一个组合框中使用submitlatency=15000而不是在addOnLoad()上使用。除此之外,当我点击任何其他部分刷新时,我使用了submitlatency=2000。但无法找到预期的结果。页面的正常行为消失,其他部分刷新似乎无法正常工作。

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

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

组合框尝试每次用户选择时加载10K条目是非常糟糕的主意。即使你以某种方式管理暂停更长时间此操作仍然太重,你的应用程序将无法扩展(很少有用户同时使用此组合将使应用程序瘫痪)。

您不应该混淆延迟,而是改变将数据传递到组合框的方式。了解dojo数据存储:

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

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

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

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

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

答案 2 :(得分: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

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

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

答案 3 :(得分:0)

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

请点击此处查看解决方案:http://openntf.org/XSnippets.nsf/snippet.xsp?id=standby-dialog-custom-control

顺便说一下。组合框中有10k个关键字?作为用户,我会拍摄开发人员; - )

答案 4 :(得分:0)

向用户提供高达10k的关键字是您不希望发生的事情。特别是不在组合框内。它们不是为这么大的数据而设计的。你不能改变设计的方式,第一个组合框将刷新数据表控件,用户可以在其中选择他们想要的东西吗?在数据表上,您可以添加寻呼机和一些过滤器。有关datatab here

的更多信息