2014-06-27 37 views
0

我有一个包含大约170个字段的大型XPage。我有相当数量的字段的工具提示。工具提示会查找帮助数据库并返回相关文本。它们工作正常,但由于执行查找的次数,它们显着减慢了加载过程。我在加载文本的JS中放入了一个dBar.info语句,并在一个加载文档并将其放入编辑模式时,它似乎已经触发了6次工具提示查找。如果它为每一个工具提示做到这一点,那么很明显这就是XPage性能低下的原因。我将DynamicContent设置为true和false,并得到了类似的结果。我很想尝试删除这些工具提示,但这种做法有失于目的。 有没有办法限制工具提示只在被调用时触发查找?就像链接到MouseOver事件的东西一样。在我看来,扩展库中的工具提示工作正常,如果只有几个字段需要内联帮助,但不能很好地扩展。 就像一个测试,我从XPage中删除了所有的工具提示,而加载速度很慢时,它可能是可以接受的,但工具提示会将它放慢到不可接受的程度。XPage中的工具提示性能

回答

3

Bill, 这是一个很好的ApplicationScope bean用例。创建一个实现Map并使用内部HashMap作为缓存的bean。我们称它为工具提示。在您的工具提示中,您将标签定义为EL,例如工具提示[ '管理器']。 XPages将调用get函数。在这里你可以检查内部的HashMap,如果你有这个值,否则你会查找它。所以查找只发生一次。

您可以替代查找需求选择加载时初始化。使用应该非常快的视图导航器。因为它将是一个只加载一次的应用程序范围。

有意义吗?

+0

有道理 - 从未做过这样的事情,所以它会成为一种全新的学习体验。 –

+0

我会给你打个实例。对这个概念的介绍(仅使用SSJS在这里:http://www.wissel.net/blog/d6plinks/SHWL-89GEGM) – stwissel

+0

我一直在想这个,ApplicationScope变量可能真的很麻烦,因为它是一个内存管理器。问题是我的顾客可能有8-10或者?不同的数据库全部使用或多或少相同的设计,因此可能会有几个非常大的ApplicationScope变量包含基本相同的工具提示提示。也许一个sessionScope变量会更好地工作,并根据需要加载工具提示。这会在限制服务器行程的同时传播加载超时。看着一个XPage数据库和几个数据库,但不知道该如何工作。 –

0

您可以使用view.isRenderingPhase()来最小化部分刷新期间的查找。使用工具提示,您还可以更改showDelay属性,以便在显示之前工具提示有延迟。这对于视图来说是一件好事,因此它不会尝试在鼠标向下移动页面时加载每个工具提示。 dynamicContent =“true”也可能意味着它没有加载页面,但只有在被调用时 - 我没有检查过,所以我不确定。