Sdílet prostřednictvím


Osvědčené postupy pro výkon ASP.NET Core Blazor

Poznámka:

Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.

Výstraha

Tato verze ASP.NET Core již není podporována. Pro více informací se podívejte na Zásady podpory .NET a .NET Core. Aktuální vydání tohoto článku najdete v verzi .NET 9.

Blazor je optimalizovaná pro vysoký výkon ve většině realistických scénářů uživatelského rozhraní aplikací. Nejlepší výkon ale závisí na vývojářích, kteří přijmou správné vzory a funkce.

Poznámka:

Příklady kódu v tomto uzlu článků přijímají referenční typy s možnou hodnotou null (NRT) a statickou analýzu stavu null-stav kompilátoru .NET, které jsou podporovány v ASP.NET Core v .NET 6 nebo novější.

Kompilace předem (AOT)

Kompilace AOT (Head-of-Time) zkompiluje Blazor kód .NET aplikace přímo do nativní webAssembly pro přímé spuštění prohlížečem. Kompilované aplikace AOT vedou ke stažení větších aplikací, ale kompilované aplikace AOT obvykle poskytují lepší výkon za běhu, zejména pro aplikace, které provádějí úlohy náročné na procesor. Další informace najdete v tématu nástroje sestavení ASP.NET Core Blazor WebAssembly a předběžná kompilace (AOT).

Metriky a trasování

Metriky a možnosti trasování pomáhají monitorovat a diagnostikovat výkon aplikací, sledovat interakce uživatelů a pochopit chování komponent v produkčních prostředích.

Konfigurace

Pokud chcete ve vaší aplikaci povolit Blazor metriky a trasování, nakonfigurujte OpenTelemetry s následujícími měřiči a zdroji aktivit v souboru aplikace Program , kde jsou zaregistrované služby:

builder.Services.ConfigureOpenTelemetryMeterProvider(meterProvider =>
{
    meterProvider.AddMeter("Microsoft.AspNetCore.Components");
    meterProvider.AddMeter("Microsoft.AspNetCore.Components.Lifecycle");
    meterProvider.AddMeter("Microsoft.AspNetCore.Components.Server.Circuits");
});

builder.Services.ConfigureOpenTelemetryTracerProvider(tracerProvider =>
{
    tracerProvider.AddSource("Microsoft.AspNetCore.Components");
    tracerProvider.AddSource("Microsoft.AspNetCore.Components.Server.Circuits");
});

Měřiče výkonu

Další informace o následujících měřičích výkonu najdete v tématu ASP.NET integrované metriky Core.

Microsoft.AspNetCore.Components metr:

  • aspnetcore.components.navigate: Sleduje celkový počet změn tras v aplikaci.
  • aspnetcore.components.handle_event.duration: Měří dobu zpracování událostí prohlížeče, včetně obchodní logiky.

Microsoft.AspNetCore.Components.Lifecycle metr:

  • aspnetcore.components.update_parameters.duration: Měří dobu trvání parametrů součásti zpracování, včetně obchodní logiky.
  • aspnetcore.components.render_diff.duration: Sleduje délku trvání vykreslovacích dávek.
  • aspnetcore.components.render_diff.size: Sleduje velikost dávek vykreslování.

Microsoft.AspNetCore.Components.Server.Circuits metr:

V serverových aplikacích zahrnují další metriky specifické pro okruhy:

  • aspnetcore.components.circuit.active: Zobrazuje počet aktivních okruhů aktuálně v paměti.
  • aspnetcore.components.circuit.connected: Sleduje počet okruhů připojených k klientům.
  • aspnetcore.components.circuit.duration: Měří dobu trvání životnosti okruhu a poskytuje celkový počet okruhů.

Blazor trasování

Další informace o následujících trasovacích aktivitách najdete v tématu ASP.NET integrované metriky Core.

Nové možnosti trasování aktivit používají Microsoft.AspNetCore.Components zdroj aktivity a poskytují tři hlavní typy aktivit trasování: životní cyklus okruhu, navigaci a zpracování událostí.

Trasování životního cyklu okruhu:

Microsoft.AspNetCore.Components.StartCircuit: Trasování inicializace obvodu pomocí formátu Circuit {circuitId}.

Štítky

  • aspnetcore.components.circuit.id: Jedinečný identifikátor obvodu.
  • error.type: Úplný název typu výjimky (volitelné)

Odkazy:

  • Sledování HTTP
  • SignalR trasování

Použití: Spojuje další Blazor stopy ze stejné relace nebo okruhu s HTTP a SignalR kontexty.

Trasování navigace:

Microsoft.AspNetCore.Components.Navigate: Sleduje změny trasy pomocí formátu Route {route} -> {componentType}.

Štítky

  • aspnetcore.components.route: Vzor URL cesty stránky.
  • aspnetcore.components.type: Název Razor třídy komponenty.
  • error.type: Úplný název typu výjimky (volitelné).

Odkazy:

  • Sledování HTTP
  • SignalR trasování
  • Trasování okruhu

Použití: Jaké Blazor stránky tato relace navštívila?

Trasování zpracování událostí:

Microsoft.AspNetCore.Components.HandleEvent: Trasování zpracování událostí pomocí formátu Event {attributeName} -> {componentType}.{methodName}.

Štítky

  • aspnetcore.components.attribute.name: Název atributu HTML, který aktivuje událost (příklad: onClick).
  • code.function.name: Název metody obslužné rutiny v C#.
  • aspnetcore.components.type: Úplný název cílové komponenty C#, která přijímá událost.
  • error.type: Úplný název typu výjimky (volitelné).

Odkazy:

  • Trasování okruhu
  • Trasa trasování

Použití:

  • Klikněte na komponentu, která způsobila výjimku a na které stránce?
  • Ve kterém propojeném okruhu a s jakým kontextem HTTP k němu došlo?