Xpages 寻找XSP提交延迟的解决方案

Xpages 寻找XSP提交延迟的解决方案,xpages,xpages-ssjs,Xpages,Xpages Ssjs,我有一个xpage,其中有相关的组合框。当我选择第一个组合框时,它会部分刷新第二个组合框,第二个组合框中填充了大量关键字(从视图中向上看大约10K)。这个操作需要很多时间,因此我决定使用XSP.submitlatency 因此,我创建了scriptblock并添加了以下代码: XSP.addOnLoad(函数(){ //将Ajax请求超时增加到35秒 XSP.submitLatency=35*1000; }); 这工作正常,但所有其他部分刷新需要15秒 然后,我尝试在第一个组合框中使用submi

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

因此,我创建了scriptblock并添加了以下代码:

XSP.addOnLoad(函数(){
//将Ajax请求超时增加到35秒
XSP.submitLatency=35*1000;
});

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

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


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

在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


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

8.5.2之前的
提交时间设置为默认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


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

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

有关解决方案,请参见此处:


顺便说一句,组合框中有10k个关键字?作为一个用户,我会向开发者开枪;-)

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

有关解决方案,请参见此处:


顺便说一句,组合框中有10k个关键字?作为一个用户,我会向开发者开枪;-)

每当用户选择某个内容时,组合框thas都会尝试加载10K个条目,这是一个非常糟糕的主意。即使你设法延长了超时时间,但这个操作太重,你的应用程序无法扩展(很少有用户同时使用这个组合会让应用程序崩溃)

您不应该干扰延迟,而应该更改将数据传递到combobox的方式。了解dojo数据存储:

然后了解combobox如何使用它们检索数据

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

  • 在浏览器中的app start上缓存数据(如果数据类型非常静态,例如城市名称)
  • 使用dojo查询存储根据用户输入只获取数据的一个子集,并让domino索引完成繁重的工作

这里有一点建议-Domino在处理大量开箱即用数据方面不是非常有效。你可以强迫它处理数百万条记录,但这需要大量的工作和知识,所以最好在你的应用程序投入生产之前仔细考虑一下,然后停止工作。

一个组合框尝试在用户每次选择某个内容时加载10K条目的输入,这是一个非常糟糕的主意。即使你设法延长了超时时间,但这个操作太重,你的应用程序无法扩展(很少有用户同时使用这个组合会让应用程序崩溃)

您不应该干扰延迟,而应该更改将数据传递到combobox的方式。了解dojo数据存储:

然后了解combobox如何使用它们检索数据

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

  • 在浏览器中的app start上缓存数据(如果数据类型非常静态,例如城市名称)
  • 使用dojo查询存储根据用户输入只获取数据的一个子集,并让domino索引完成繁重的工作

这里有一点建议-Domino在处理大量开箱即用数据方面不是非常有效。你可以强迫它处理数百万条记录,但这需要大量的工作和知识,所以最好在你的应用程序投入生产并停止工作之前仔细考虑一下。

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

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

为用户提供多达10k的关键字是您不希望发生的事情。尤其不是在组合框内。它们不是为这么大的数据量而设计的。您不能以这样的方式更改设计:第一个组合框将刷新一个数据表控件,用户可以在其中选择他们想要的内容吗?在数据表上,您可以添加一个寻呼机,当然还有一些过滤器。关于datatab的更多信息,为用户提供多达10k的关键字是您不希望发生的事情。特皮西亚