Right now the `ServerRendererFactory2` creates a new instance of the `DomElementSchemaRegistry` for each and every request, which is quite costly (for the Tour of Heroes SSR this takes around **30%** of the overall execution time). Since the schema is never modified, but only used in a read-only fashion, it should be possible to re-use a single instance instead. Naive performance testing with 100 concurrent connections and 1000 requests in total shows an approximate **33%** improvement in Req/Sec on the Tour of Heroes SSR example. PR Close #28150 PR Close #28151
This commit is contained in:
parent
bc02e31185
commit
ce3a746644
|
@ -12,11 +12,13 @@ import {DOCUMENT, EventManager, ɵNAMESPACE_URIS as NAMESPACE_URIS, ɵSharedStyl
|
|||
|
||||
const EMPTY_ARRAY: any[] = [];
|
||||
|
||||
const DEFAULT_SCHEMA = new DomElementSchemaRegistry();
|
||||
|
||||
@Injectable()
|
||||
export class ServerRendererFactory2 implements RendererFactory2 {
|
||||
private rendererByCompId = new Map<string, Renderer2>();
|
||||
private defaultRenderer: Renderer2;
|
||||
private schema = new DomElementSchemaRegistry();
|
||||
private schema = DEFAULT_SCHEMA;
|
||||
|
||||
constructor(
|
||||
private eventManager: EventManager, private ngZone: NgZone,
|
||||
|
|
Loading…
Reference in New Issue