Blazor sono quattro diverse sistemazioni di hosting che portano un nome solo, e lo snippet va in un file diverso in ognuna. La regola sotto è la stessa: appartiene al guscio che sopravvive alla navigazione, mai a una pagina.
Questo sito è un'applicazione Blazor, ed è misurato da Skomi in questo modo.
Vai prima a prendere lo snippet dalla tua dashboard:
<script src="https://t.skomi.com/s/YOUR-SITE-ID.js" defer></script>
Dove va
| Il tuo progetto | File | Dove al suo interno |
|---|---|---|
| Blazor Web App (.NET 8+) | Components/App.razor | Nel <body>, dopo <Routes /> |
| Blazor WebAssembly autonomo | wwwroot/index.html | Nel <body>, prima dello script della framework |
| Blazor Server (.NET 6/7) | Pages/_Host.cshtml o Pages/_Layout.cshtml | Nel <body> |
| MAUI Blazor Hybrid | non applicabile | Non è questa la guida: quella è un'app, vedi installare su MAUI |
Per un Blazor Web App ha questo aspetto:
<body>
<Routes />
<script src="https://t.skomi.com/s/YOUR-SITE-ID.js" defer></script>
<script src="_framework/blazor.web.js"></script>
</body>
Perché non in un layout o in una pagina
⚠ Uno script inserito dalla navigazione migliorata non viene eseguito. Blazor rattoppa il DOM invece di ricaricare il documento, e un tag <script> che arriva come parte di quel rattoppo non gira. Quindi uno snippet messo in MainLayout.razor o in un componente di pagina funziona al primo caricamento, è morto in silenzio dopo la prima navigazione interna, e sembra installato per tutto il tempo.
App.razor sta fuori da tutto quello che Blazor sostituisce. Il tag carica una volta, e resta caricato.
La navigazione viene contata per te
Succedono due cose diverse a seconda che tu rilasci o no il runtime di Blazor, e tutte e due sono già gestite.
Con blazor.web.js. I collegamenti interni usano la navigazione migliorata: il documento sopravvive e l'indirizzo cambia attraverso history.pushState. Lo script di Skomi avvolge pushState e replaceState e ascolta popstate, quindi ognuna di quelle è una pagina vista. Niente a cui iscriversi, niente da chiamare alla navigazione.
Senza. Un'applicazione Blazor resa staticamente e senza interattività non rilascia nessun runtime, quindi ogni collegamento è un caricamento di pagina normale e conta come su qualunque altro sito. Questo sito è quel caso.
Non devi sapere quale dei due sei: lo stesso tag nello stesso posto è giusto per tutti e due.
⚠ Una navigazione che non cambia l'indirizzo non viene contata, in nessuna delle due modalità. Le strisce di schede, le fisarmoniche e i cambi di filtro senza parametri sono interazioni, non pagine viste. Se le vuoi misurate, manda un evento.
Le modalità di rendering interattive qui non cambiano niente
InteractiveServer, InteractiveWebAssembly e InteractiveAuto decidono dove girano i tuoi componenti, non come la pagina viene consegnata al browser. Lo snippet sta sopra tutto quello dentro App.razor e si comporta in modo identico sotto ognuna. Anche le modalità di rendering per singolo componente sono irrilevanti; c'è un documento e uno script.
Se non arriva niente
- Il tag è in
App.razore non in un layout? Vedi l'avviso qui sopra; è per questo fallimento che questa guida esiste. - È dentro il
<body>? Nel<head>funziona lo stesso, ma tienilo fuori dai piedi di<HeadOutlet />: quell'uscita è per il contenuto che i componenti contribuiscono, e un tracker non è uno di quelli. dotnet watche un documento in cache. La navigazione migliorata e il ricaricamento a caldo ti possono lasciare a guardare una pagina costruita prima che tu aggiungessi il tag. Fai una ricarica forzata una volta.- Il localhost non viene contato. Pubblicalo, oppure prova contro un nome host vero.
Vedi lo snippet per che cosa fa una volta caricato, e misurare un'app se quello che stai misurando è software che le persone installano invece che un sito che visitano.