【问题标题】:ToolTip Performance in XPagesXPage 中的工具提示性能
【发布时间】:2014-06-27 22:10:07
【问题描述】:

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

【问题讨论】:

    标签: tooltip xpages xpages-extlib


    【解决方案1】:

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

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

    有道理吗?

    【讨论】:

    • 有道理 - 从来没有做过这样的事情,所以这将是一种新的学习体验。
    • 我将为您准备一个工作示例。概念介绍(此处仅使用 SSJS:wissel.net/blog/d6plinks/SHWL-89GEGM
    • 我一直在考虑这个问题,ApplicationScope 变量作为内存猪可能真的很麻烦。问题是我的客户可能有 8 - 10 个或 ??不同的数据库都使用或多或少相同的设计,因此可能会有几个非常大的 ApplicationScope 变量包含基本相同的工具提示提示。也许 sessionScope 变量会更好地工作,并根据需要加载工具提示。这将分散加载时间,同时限制服务器行程。查看了一个 XPages DB 和几个数据 DB,但不确定它的效果如何。
    • 每个应用程序都有一次 applicationScope。 sessionScope 每个用户都有一次。一个缓存的图像可能值 1000 个提示。当然,您可以重构您的应用程序并拥有一个 XPages 应用程序,它可以写入 10 个不同的数据库。无论如何:在 bean 的 applicationScope 和 sessionScope 之间切换不需要任何代码更改,只需 faces-config 中的一条语句。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 2019-12-20
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      相关资源
      最近更新 更多