Optimierung von FCP/LCP durch Caching von Raw-View-Modul-Lookups

lookupView-patch

Implementiert jetzt über Map anstelle von Array.

Zeitaufwand beim Anwendungsstart in lookupView – für Entwicklungsinstand:

Gesparte Zeit: ~115 ms

Dies reduziert die Zeit, die in appendOutletView verbracht wird, von 1.083 ms auf 946 ms – für Entwicklungsinstand.


Patch bei Raw Handlebar Helpers

Ja, es ist tatsächlich ein Copy-Paste mit einer Änderung: eine günstige Prüfung für isPath verwenden.

      // ersetzt @ember/-internals/utils isPath
      // @siehe: https://github.com/emberjs/ember.js/blob/3537670c14883346e11e841fcb71333384fcbc87/packages/%40ember/-internals/metal/lib/path_cache.ts#L5-L7
      // @siehe: https://github.com/emberjs/ember.js/blob/255a0dd3c7de1187f4a2f61a97cf78bfff8f66a8/packages/%40ember/-internals/glimmer/lib/utils/bindings.ts#L70
      let isPath = context.indexOf('.') > -1;

Z. B. löst renderTopicListItem letztendlich viele Aufrufe von _getPath aus (weitere 50-100 ms Einsparung):
Firefox Profiler (Callstack gefiltert nach _getPath innerhalb von renderTopicListItem)

Vielleicht sind die aufwändigen Aufrufe von _getPath etwas, das in Ember.js und nicht in Discourse optimiert werden sollte.


Und werfen Sie einen Blick auf den Firefox Profiler, um Einblicke in die JavaScript-Ausführung zu erhalten: