2013-06-27 60 views
0

我有一個xpage,其中有依賴組合框。當我選擇第一個組合框時,它會部分刷新第二個組合框,該組合框由大量關鍵字填充(從視圖中擡起大約10K)。這個動作需要很多時間,因此我決定使用XSP.submitlatency尋求XSP提交延遲的解決方案

所以,我創建腳本塊,並添加以下代碼:

XSP.addOnLoad(function() { //increase Ajax request timeout to 35 seconds XSP.submitLatency = 35 * 1000; });

這工作得很好,但隨後其他所有部分刷新需要15秒。

然後我嘗試使用submitlatency=15000與第一個組合框,而不是使用addOnLoad()。隨着上面我使用submitlatency=2000當我點擊任何其他部分刷新。但找不到預期的結果。頁面的正常行爲已消失,其他部分刷新似乎不起作用。

請幫忙!或者建議是否有更好的替代方案來解決這個問題,以提高響應時間。

回答

5

具有10k個條目的組合框是UX災難等待發生。使用具有本地數據源或任何其他更大機制的Dojo網格。本地存儲是你的朋友

+0

謝謝史蒂夫!探討以上建議。然而,由於它是緊急的,暫時...我在對話框中使用了帶有過濾器的視圖,並從選擇的原始文檔中接收了值。 –

0

8.5.2之前submitLatency被設置爲默認值6秒。從8.5.2開始的默認值是20秒。更改XSP.submitLatency會改變它的一切。這也是一個暫停時間,所以除非你的其他呼叫開始緩慢,否則不應該增加提交時間。

您可以嘗試更改'asp.ajax.renderwholetree'以查看是否有幫助。以下是對此的評論。

# This property defines if the JSF tree should be 
# completely processed during the render phase, 
# including the components that are not rendered. When set to false 
# it gives better performance but with potential side effects 
# if some components are changing data during the render phase 
# (which # should be avoided anyway) 
#xsp.ajax.renderwholetree=true 

此值在8.5.2及更高版本中默認爲true

除此之外,我會建議使用XPages Toolbox來調試應用程序。培訓材料包含在XPages Masterclass中:

+0

感謝您的建議。我可能會改變設計本身。 –

0

處理此問題的最佳方法是使用加載屏幕/待機對話框。這可以防止用戶在部分刷新期間點擊其他按鈕/鏈接/任何東西,並通知他發生了某些事情。這有助於獲得更好的用戶體驗。

在這裏看到一個解決方案:http://openntf.org/XSnippets.nsf/snippet.xsp?id=standby-dialog-custom-control

順便說一句。組合框中有10k個關鍵字?作爲用戶,我會拍攝開發者;-)

+0

所有這些關鍵字都是由用戶給出的:)我也嘗試過CC,但是我想獲取combobox1的某些值的值需要大約。 35秒。 –

+0

@RaviGupta:10秒的響應時間極其糟糕,15秒不再被接受,但35秒?對於一個組合框,然後填寫一個極端長的列表?如果這是一個必須生成的報告,並且有一個很好的進度條,那沒關係。但是組合框的價值?請檢查這篇文章:https://medium.com/design-ux/eeda5cbbd315 –

+0

@RaviGupta:對不起,我不明白你想要說的「嘗試上面的CC」和「需要35秒」?你的意思是部分刷新超時? –

1

一個組合框試圖加載10K條目,每次用戶選擇某事是非常糟糕的主意。即使您設法讓超時時間更長,但此操作過於沉重,您的應用程序無法擴展(很少有用戶在同一時間使用此組合將會使應用程序屈服)。

您不應該耽擱延遲,而應改變將數據傳遞到組合框的方式。瞭解Dojo數據存儲:

http://dojotoolkit.org/reference-guide/1.9/quickstart/data/usingdatastores.html

然後找出組合框如何使用它們來獲取數據。

有了這些知識,你將能夠之一:

  • 緩存在瀏覽應用程序啓動數據(如果數據類型是相當靜態的 - 爲城市例如名稱)
  • 使用Dojo查詢根據用戶輸入獲取數據的一個子集,並讓多米諾骨牌索引做出努力

位的建議在這裏 - Domino在處理大量數據時效率不高。您可以強制它與數百萬條記錄一起工作,但這需要大量的工作和知識,所以最好在您的應用投入生產並簡單停止工作之前考慮這一點。

+0

感謝您的建議。我會改變設計,但我會學習提到的數據存儲,這可能有助於未來。 –

0

爲用戶提供高達10K的關鍵字是你不想發生的事情。特別是不在組合框內。他們不是爲這麼多的數據而設計的。你不能以這樣的方式改變設計:第一個組合框將刷新數據表控件,用戶可以在其中選擇他們想要的內容。在數據表中,你可以添加一個尋呼機,並且可以添加一些過濾器。更多關於datatab的信息here

+0

謝謝!我改變了設計,我做了一些像你所建議的事情。現在,它工作正常。 –