Description
Description
PR #41961 removed Class metadata cache from development environment (by default), but as @dunglas mentioned in discussion #40034
the dev environnement is already very slow on large projects. I'm not sure if it's a good idea (but I'm not strongly opposed to it either).
I was a little confused, because serializer is very usable feature in API development(and serializer is heart of api-platform).
I have an interactive map application with layer clustering and dynamic layer-in-view loading. Application produces multiple resource requests on each interaction (changing zoom, moving view) and it should be dramatically slow without cache in dev.
So I decided to find a way to invalidate metadata cache and found two ways:
- Bundles can register resources using ContainerBuilder::addResource and Kernel checks resource freshness at the start of initialization. Can we add a user-defined resources? (at least FileResource and DirectoryResource)
- More flexible and complex way is to create a service, which handles dynamic resource adding and invalidates cache pools separately depending on associated resources. For example:
CacheClassMetadataFactory
will add directory or file resources to this service associated withcache.serialzier
pool. That is dev-only service of course and other services can add their resources to invalidate cache pools.
Example
Well, I ve forked #41961 bugdemonstrating repository and added a very naive invalidator service. It's just a concept, don't blame me if I am on a wrong way. There are still some unresolved problems and I know it (especially init and commit events binding).
https://github.com/Foxprodev/PR-40856
Foxprodev/PR-40856@6c21f94