2014-06-27 38 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」也可能意味着它沒有加載頁面,但只有在被調用時 - 我沒有檢查過,所以我不確定。