Performance 复杂的Xpage需要很长时间才能进行部分刷新

Performance 复杂的Xpage需要很长时间才能进行部分刷新,performance,xpages,refresh,partial,Performance,Xpages,Refresh,Partial,我有一个复杂的xpage,其中有许多嵌套的自定义控件。每次我执行部分刷新都需要4秒以上的时间来完成。如果我去除了复杂性,它工作得很好,速度也很快 我在这个复杂的Xpage上做了一个测试,即使使用部分执行模式,这个简单的测试也需要4秒钟才能完成 <xp:button value="Label" id="button1"> <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refresh

我有一个复杂的xpage,其中有许多嵌套的自定义控件。每次我执行部分刷新都需要4秒以上的时间来完成。如果我去除了复杂性,它工作得很好,速度也很快

我在这个复杂的Xpage上做了一个测试,即使使用部分执行模式,这个简单的测试也需要4秒钟才能完成

<xp:button value="Label" id="button1">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="refreshPanel" disableValidators="true" execMode="partial" execId="inputText1">
    </xp:eventHandler>
</xp:button>
<xp:div id="refreshPanel">
    <xp:inputText id="inputText1"></xp:inputText>
</xp:div>


有人对此有什么暗示吗?任何可以调整的服务器设置?

即使是部分刷新,所有XPage控件的值都会提交到服务器。“部分”是指在这种情况下,只有label1部分返回给客户端。但这是一个完整的提交,这可能需要时间

不过你可以提交一部分。加

execMode="partial" execId="button1"
添加到eventHandler属性。这次只提交execId的值。在execId中放入此部分刷新需要提交的id(可能是一个面板)


查看有关部分执行模式的更多信息。

您可以做一些小调整来帮助加快速度(一般来说),但是我不确定它们对单个复杂页面有何帮助,但是

  • 更改服务器页面持久性设置以将当前页面保留在内存中
  • 尽量减少SSJS的使用
  • 部分执行模式(Knut已经提到)
  • 支持并发用户加载
  • 将Maxheap大小保持在可用RAM的¼
  • 对于XSP属性,启用“使用运行时优化的java脚本” 和CSS资源”
  • 设置值绑定,以便在页面加载时进行计算

以上所有这些都是我多年来从其他开发人员那里读到的提示/建议,我在可能的情况下实现/尝试实现自己,因此可能值得尝试一些/全部,看看是否有帮助?

亲爱的Knut,我读了这篇文章,但是所有的字段都被提交到了服务器,我的部分刷新仍然需要4秒钟。这就是你的意思吗?这仍然会提交页面上的所有字段。您更改的代码看起来不错。您确定项目已重建吗?已清理并重建。我认为这更多的是关于我的Xpage的复杂性的问题。我有一个自定义控件,其中包含几个其他自定义控件,这些自定义控件又由更多自定义控件组成。所以这棵树真的越来越深了。如果我把所有这些都注释掉,部分刷新会非常快。有没有办法说服务器不处理整个树?这就是部分执行模式应该做的吗?是的,应该。我们也有复杂的xpage和级联自定义控件。您在XPage的活动中是否有耗时的代码?非常感谢Knut和Chris的支持。将两个答案都标记为已接受答案,但只允许一个答案。至少“对于您的XSP属性,启用“使用运行时优化的java脚本和CSS资源”可以做到这一点。我的部分刷新现在比以往任何时候都快。我面临的这种变化是什么?RAM中充满了Xpages?在我的RAM中,一个Xpage要花多少钱?嗯,不确定是否有任何明显的缺点?它基本上只是将JS和CSS文件合并成更少的文件,这样可以减少请求数量,从而使站点加载速度更快。事实上,当我打字时,我想我记得你的CSS中可能有相对URL的问题?如果是这样的话,只需更新URL引用即可。或者,我选错了做这件事的地方更改服务器页面持久性设置以将当前页面保留在内存中是帮助我解决问题的一个方法。在这种情况下,我知道的唯一缺点是可能会出现临时内存泄漏,但所有内容都会在某个时间释放,因此无需担心。请小心将所有内容存储在内存中,因为如果您有多个xpage,则会耗尽内存。