fix: improve tracking of query analyzer list types #2834
Merged
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 does this implement/fix? Explain your changes.
This modifies the QueryAnalyzer to only track
list:$type_name
for RootConnections.Nested connections will not tag the query with
list:$type_name
as it was leading to over-purging.see: wp-graphql/wp-graphql-smart-cache#225
Does this close any currently open issues?
related: wp-graphql/wp-graphql-smart-cache#225
Any other comments?
This should significantly reduce the amount of queries that are purged from common events such as publishing posts.
Before
Here we can see that a query for a Category and it's related posts will return a
list:post
key, meaning it will invalidate anytime a new post is published.After
Here we do not see the
list:post
key, meaning that this query will not invalidate whenever a new post is published.However, if a new post is published and associated with the "child" category, then this query will be purged because that will call purge on the ID of the child category.