Improve page load performance on Projects::MergeRequests::CreationsController#new when it has lots of forks
Summary
This is follow up issue from #21087 (closed).
We've resolved issues with N+1 sql queries which improved the performance quite a bit, but we still have a room for an improvement especially for projects with lots of forks.
- gitlab-foss with approx. 6000 forks
- gitlab with approx. 1300 forks
I see gitlab is doing not too bad with 1300 forks, but it's still too slow for gitlab-foss with 6000+ forks.
This is because we're loading all Target Projects on page load which I don't think is necessary.
There could be more, but I can think of two options:
- Don't load Target Projects on page load, but on click event of the dropdown list. It'll get the page loaded quickly and load that target projects only when user clicks into it.
- Just load handful of Target Projects initially such as the original project and the projects user owns etc. Provide a search function to search other projects if required.
Improvements
It'll improve page load performance even with lots of forks especially for gitlab-foss.
Risks
I don't think it's anymore riskier than what it is now.
Involved components
- app/controllers/projects/merge_requests/creations_controller.rb
- app/views/projects/merge_requests/creations/_new_compare.html.haml
Edited by Michelle Gill