Improve response time of Shops page #12520
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What? Why?
shops#index
#11991Explanation
Possible Cause
One possible cause of the slow performance is the execution of multiple database queries to fetch
distributed_properties
for each active shop (2 or 3 queries per active shop).Solutions Considered
SHOPS_EXPIRY
value can be considered. The value is currently set to 15 seconds. I think it could be extended depending on how important it is show shops open/closed status accurately on this page. We can also consider telling users on the page “shops info is updated every x minutes” or something to that effect.distributed_properties
prior to the initial page load. We could probably fetch them via AJAX request, but this may require significant code refactoring.distributed_properties
per active shop, so there is a bit of room for optimization. The best query I could come up with is to combine the queries indistributed_product_properties
anddistributed_producer_properties
methods into one long chain. This was tested and it reduces the response time by roughly 33%.What should we test?
There should be no regression or changes in behavior of the
/shops
page.To test the performance:
master
branch, visit/shops
and take note of the request processing time from the logs./shops
again and compare the request processing time.Release notes
Changelog Category (reviewers may add a label for the release notes):
The title of the pull request will be included in the release notes.
Dependencies
Documentation updates