Hi everyone, thank you all for your answers. I'm a colleague of Markus and currently working this topic. We have solved the issue by dividing into 2 steps:
First implementing custom pagination buttons below the gallery/datagrid to set the offset attribute for OQL query. Therefore Its limited to 10/12 objects per request. Which make the next process faster (12 compared to 200+ objects)
After gathering the return list of the non-persistent objects, we retrieve the real projects by association and make a new list from them. Then we delete the non-persistent objects' list. Therefore nothing showed on the page and when redirecting, no new requests made to the server.
Overall we are benefiting from two world. OQL helps us just for the filters (a lot quicker than the list operations) and end result of the real project objects are showing in the gallery/datagrid (quicker redirecting response).
These are the main page and the filter page
Did you check your client state size?
What you describe sounds like many non-persistent objects are kept in the client.
https://docs.mendix.com/refguide/minimize-number/
https://docs.mendix.com/refguide/monitoring-client-state/
Can you share the OQL query?