Feature #7986
openConsider optimizing updates by only changing changed form values?
0%
Description
On every signal all form data is submitted to the server, even form data that hasn't changed since the last signal. Maybe we could make it so that only updated form data is sent, and not all form data.
Special care will have to be taken for situations where absence of form data has a particular meaning, e.g. no values for WSelectionBox
means no selection. In that case we could encode it as an array instead? Since WSelectionBox
is supported when JavaScript is disabled, the old behavior should still work.
Apart from making the signals a bit smaller this may help in situations where many signals are being sent very quickly, causing the server side value of some widgets to be temporarily reset to their old value.
Suppose an update from the server changes the selected item in a WComboBox
, but before that update was received and processed by the browser many events occur. These events will still have the old item selected. The effect will be that the current selected item of the WComboBox
temporarily switches back to the old value after being changed, to then settle to the new value once a signal from the client comes in after the client has updated its value.
Updated by Roel Standaert almost 4 years ago
Note: we'd also have to take note of all of the form values after every server update, so we can catch the situation where the server changes something and the user changes it back to the old value.
Updated by Korneel Dumon almost 4 years ago
I think the race condition can still occur. If the formwidget value in the client changes rather than stay the same, then the server will still get the wrong value.
Updated by Roel Standaert almost 4 years ago
Hence I said "may help". I think that's the more uncommon case, and we can't really (or at least easily) avoid a race condition in that case.