Производительность всплывающей подсказки в XPages

У меня большой XPage с около 170 полями. У меня есть подсказки для большого количества полей. Подсказка выполняет поиск в справочной базе данных и возвращает соответствующий текст. Они работают нормально, но они значительно замедляют процесс загрузки из-за количества выполненных операций поиска. Я поместил в JS оператор dBar.info, который загружает текст, и в один загружает документ и переводит его в режим редактирования, который, по-видимому, вызвал один просмотр всплывающей подсказки 6 раз. Если он делает это для каждой из подсказок, то, очевидно, это является причиной низкой производительности XPage. Я сделал это и с DynamicContent, установленным на true и false с похожими результатами. Я испытываю желание просто удалить подсказки, но это побеждает цель. Есть ли способ ограничить всплывающую подсказку, чтобы вызвать только поиск при вызове? Как то, что связано с событием MouseOver. Мне кажется, что всплывающая подсказка в библиотеке расширений работает нормально, если есть только несколько полей, требующих встроенной помощи, но она плохо масштабируется. В качестве теста я удалил все подсказки из XPage, и пока загрузка медленная, это, вероятно, приемлемо, но подсказки замедляют ее до такой степени, что она становится неприемлемой.

2 ответа

Решение

Билл, это отличный вариант использования для компонента ApplicationScope. Создайте bean-компонент, который реализует Map и использует внутренний HashMap в качестве кэша. Давайте назовем это всплывающей подсказкой. Во всплывающей подсказке вы определяете метку как EL, например подсказку ['Manager']. XPages вызовет функцию get. В нем вы проверяете внутренний HashMap, если у вас есть значение, иначе вы ищите его. Так что поиск происходит только один раз.

Вы могли бы вместо поиска по требованию выбрать загрузку при инициализации. Использование навигатора представления, который должен быть очень быстрым. Поскольку это будет область приложения, загружаемая только один раз.

Имеет смысл?

Вы можете использовать view.isRenderingPhase(), чтобы минимизировать поиск во время частичного обновления. С помощью всплывающей подсказки вы также можете изменить свойство showDelay, чтобы всплывающая подсказка имела задержку перед отображением. Это хорошая вещь для представления, поэтому он не пытается загрузить каждую подсказку, когда мышь перемещается вниз по странице. dynamicContent="true" также может означать, что он не загружается вместе со страницей, а только при вызове - я не проверял это, поэтому я не уверен.

Другие вопросы по тегам