我有一个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
。但无法找到预期的结果。页面的正常行为消失,其他部分刷新似乎无法正常工作。
请帮忙!或者建议是否有更好的替代方案来处理这个问题,以提高响应时间。
答案 0 :(得分:5)
具有10k条目的组合框是等待发生的UX灾难。将Dojo网格与本地数据源或任何其他更大的机制一起使用。本地存储是您的朋友
答案 1 :(得分:1)
组合框尝试每次用户选择时加载10K条目是非常糟糕的主意。即使你以某种方式管理暂停更长时间此操作仍然太重,你的应用程序将无法扩展(很少有用户同时使用此组合将使应用程序瘫痪)。
您不应该混淆延迟,而是改变将数据传递到组合框的方式。了解dojo数据存储:
http://dojotoolkit.org/reference-guide/1.9/quickstart/data/usingdatastores.html
然后了解组合框如何使用它们来检索数据。
有了这些知识,您将能够:
这里有一些建议 - 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
的更多信息