I'm trying to get faster startup of my site and have added the config below.
It looks like as soon as EPi loads and updates EPi also removes all my defined remove-elements inside scanAssembly. Should it be like this? I don't see the same behaviour in EPi6.
"Removes" means EPiServer is removing from the file or "ignores" it while scanning?
I trace much less time inside ContentTypeModelScanner so I assume it works.
Having to re-add my remove-elements to EPiServerFramework.config before next startup is something I would like to avoid though.
However "much less time" in this case is still way too much.
80 seconds belowCastle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.CreateType(TypeBuilder)
Drilling down and find most of the time (60 seconds) belowEPiServer.DataAbstraction.RuntimeModel.ContentDataActivator.Create(Type)And below that EPiServer.DataAbstraction.RuntimeModel.ContentTypeModelScanner+<>c__DisplayClass14`3.<EagerCompileProxies>b__10()
I'm looking into what more I can do. Some pointers would be appreciated!
The code you are refering to is running in the background as a .NET Task so it should not affect startup on a multi core system. The reason we are doing this is to avoid that the first requests to pages/blocks etc causes this compilation which slows down the site and the startup. So basically an optimization that should help you.
Type scanning is done earlier and an area we done a lot of improvements to in EPiServer 7.0 to avoid the performance hit on startup but to see the full effect of that you really need to enable optimizeCompilations in web.config. Also, EPiServer CMS 7.5 does no longer save changes to web.config and automaticSiteMapping on startup. That we change the scanAssembly elements in EPiServer 7.0 and older is not something I heard about before.
Correction: I actually think the Alloy templates that shipped with EPiServer 7.0 wipe out the scanAssembly. Have a look at the post build events that apply configuration transformations.
I can see that the remove-elements exist "post-build". But after site startup the are removed.
In regards to this project's extremely slow startup I suspect some kind of bug in here:Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.CreateType(TypeBuilder)
EPiServer 7.1:82 seconds and 35420 calls.
Same project (almost at least) upgraded to 7.5:Same function signature 1,8 seconds and 3689 calls.
Live upgrade is still quite a bit far ahead so getting better perfomance in 7.1 is wanted. There is a support ticket registered.
What more analysis options do I have?
Make sure the automaticSiteMapping element is not removed post build.
Fixed that now and that keeps my remove list intact after startup.
Startup is faster but now every request takes much longer. Haven't had time to anlyze further.