-
-
Notifications
You must be signed in to change notification settings - Fork 299
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TwigComponent] Centralize, reuse and warm-up component properties metadata #2211
base: 2.x
Are you sure you want to change the base?
Conversation
src/TwigComponent/src/DependencyInjection/Compiler/TwigComponentPass.php
Outdated
Show resolved
Hide resolved
src/TwigComponent/src/DependencyInjection/TwigComponentExtension.php
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks pretty cool! Thanks @smnandre
As an alternative, or even as a follow-up, I think it makes sense to replace/improve class Structure may look like this: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we agree, this is happening only in prod ? I don't see anything prod related
Hey @onEXHovia ! You read my mind This is indeed my next move, and i started to extract the props metadata from template too :) |
@WebMamba nothing "prod-related" For all the environments, during a request, there is no need to compute metadata twice, so the values are "kept". Also, if you use What's maybe missing here is something to invalidate the cache locally if you change a file ? Do you have encountered any trouble ? |
First version to replicate behaviour + some code fixes In an IRL app, the number of class-based components is not something "big". So this could/should be computed once during warm up. Next steps: - adapt DI - introduce cache + cachewarmer
8947f76
to
1c2fdae
Compare
1c2fdae
to
aca73a5
Compare
Currently if we have 50 times the same component in a page, 50 times we use reflection to analyse component class properties and methods.
This PR centralize this task in a dedicated (internal) service and add a cachewarmer to pre-compute metadata during app build.
Significant performance gains here too
(i won't do charts for every PR but be sure i'm gonna make some before/after once i'm "done" with all this.... in Vienna 👼 )