I have a complex xpage with lots of nested custom controls. Everytime I execute a partial refresh it takes over 4 seconds to finish. If I remove the complexity it works just fine and is fast as wished.
I put a test on this complex Xpage and even with partial execution mode this simple test takes over 4 seconds to finish.
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="refreshPanel" disableValidators="true" execMode="partial" execId="inputText1">
</xp:eventHandler>
</xp:button>
<xp:div id="refreshPanel">
<xp:inputText id="inputText1"></xp:inputText>
</xp:div>
execution time of partialrefresh
Does anyone have a hint on this? Any server settings which can be adjusted?
There's a few little tweaks you can make to help speed things up (in general) however I'm not sure how they would help with a single complex page, but.....
- Change the server page persistence setting to keep the current page in memory
- Minimize the use of SSJS
- Partial Execution mode (which Knut has already mentioned)
- Support Concurrent User Load
- Keep the Maxheap size at ¼ of the available RAM
- For your XSP properties, enable “Use run-time optimized java script
and CSS resources”
- Set your value bindings so they compute on the page load.
All of the above are tips/recommendations I've read from other developers over the years and I implement/try to implement myself where possible so might be worth trying some/all to see if it helps?
Even though it is a partial refresh all XPage controls' values are submitted to server. "partial" means in this case that only the label1 part returns to client. But it is a full submit and this might take time...
You can submit partially though. Add
execMode="partial" execId="button1"
to your eventHandler properties. This time only the execId's value gets submitted. Put in execId the id that needs to be submitted (maybe a panel) for this partial refresh.
Have a look here for more information on partial execution mode .