Preload enterprise distributed_properties for /shops page #12724
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?
When visiting https://openfoodnetwork.org.uk/shops, the page load is very slow. Given that this page is linked to from the
CTA above the fold on https://openfoodnetwork.org.uk/, it seems ideal that should load quickly.
Here, I have moved
distributed_producer_properties
anddistributed_product_properties
out of the enterprise serialiser and into the model (IMO a serialiser shouldn't be making new queries to the DB anyway), and defined them as associations so that they can be preloaded. This should improve on the n+2 situation as visible here (in green):There is potentially further that one could go (defining just a single
distributed_properties
has_many relationship), but I'm not sure if it's worth it, or about any other intricacies about how it is used.What should we test?
I haven't been able to test this on a representative data set locally, so I'm unable to confirm how much of an impact this has!
Release notes
Changelog Category (reviewers may add a label for the release notes):
Dependencies
It's similar to #12723, but doesn't depend on it directly
Documentation updates