Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Blazor non emette più <link rel="modulepreload"> o <link rel="preload"> indicazioni sulle risorse per le pagine raggiunte tramite la navigazione avanzata. Il precaricamento delle risorse continua a funzionare per il caricamento iniziale della pagina e per la navigazione normale (non avanzata).
Versione introdotta
.NET 11
Comportamento precedente
In precedenza, BlazorResourcePreloader generava elementi <link> di precaricamento per le risorse utilizzate dalla pagina di destinazione in ogni richiesta con rendering lato server, incluse le richieste servite come navigazione avanzata.
Quando si è verificato un caso di navigazione migliorata, i nuovi elementi di precaricamento sono stati integrati nel DOM esistente. L’operazione di merge spesso aggiungeva e rimuoveva elementi <link> in un ordine diverso rispetto alla pagina precedente, il che ha portato alcuni browser a inviare più richieste di preload del necessario. Il runtime Blazor WebAssembly inoltre non viene riavviato durante una navigazione avanzata, quindi i preload hint emessi per esso dopo la prima pagina erano ridondanti.
Nuovo comportamento
A partire da ASP.NET Core 11, ResourcePreloader emette elementi `preload` solo se la risposta non è una navigazione avanzata. Le pagine raggiunte dall'esplorazione avanzata non ricevono più gli hint di precaricamento impliciti aggiunti in precedenza dal framework.
Il comportamento precedente nel caricamento iniziale della pagina (la prima richiesta, prima che si verifichi qualsiasi spostamento avanzato) rimane invariato. Anche le pagine che l'utente raggiunge senza navigazione avanzata (ad esempio, ricaricamenti completi della pagina o navigazioni esterne) continuano a ricevere indicazioni di precaricamento.
Tipo di cambiamento che interrompe la compatibilità
Questa modifica è una modifica funzionale.
Motivo della modifica
Le indicazioni di precaricamento implicite durante la navigazione avanzata hanno prodotto richieste di precaricamento del browser ridondanti perché il runtime WebAssembly non viene riavviato e la fase di unione del DOM produceva spesso un ordine instabile degli elementi <link>. La rimozione degli hint per la navigazione avanzata offre un comportamento di rete più prevedibile.
Per ulteriori informazioni, vedi [Blazor] Disabilitare il precaricamento per la navigazione migliorata (dotnet/aspnetcore #63544), e non commentare la PR chiusa. Se si hanno commenti e suggerimenti su questa modifica, aprire un nuovo problema nel dotnet/aspnetcore repository GitHub.
Azione consigliata
Se ti basavi sugli hint impliciti di precaricamento durante la navigazione avanzata, aggiungi tag <link rel="preload"> o <link rel="modulepreload"> espliciti nel tuo <HeadContent> per le risorse specifiche che vuoi precaricare:
<HeadContent>
<link rel="modulepreload" href="_content/MyLib/big-module.js" />
</HeadContent>
In alternativa, escludi i collegamenti pertinenti dalla navigazione avanzata se per te il precaricamento è più importante di una navigazione contestuale più rapida. Per altre informazioni, vedere Navigazione avanzata e gestione dei moduli.
Le API interessate
None. Nessuna superficie API pubblica modificata. La modifica riguarda il precaricamento implicito delle risorse eseguito dal rendering lato server Blazor.