Blazor 拡張ナビゲーションを通じて到達したページの <link rel="modulepreload"> または <link rel="preload"> リソース ヒントが出力されなくなりました。 リソースの事前読み込みは、初期ページ読み込みと通常の (強化されていない) ナビゲーションで引き続き機能します。
導入されたバージョン
.NET 11
以前の動作
以前は、Blazor の ResourcePreloader は、強化ナビゲーションとして処理されるリクエストを含め、サーバー レンダリングされるすべてのリクエストで、遷移先ページで使用されるリソースに対するプリロード <link> 要素を出力していました。
拡張ナビゲーションが発生すると、新しいプリロード要素が既存の DOM にマージされました。 マージでは、多くの場合、前のページとは異なる順序で要素 <link> 追加および削除されるため、一部のブラウザーでは、必要以上に多くのプリロード要求が発行されました。
Blazor WebAssembly ランタイムは拡張ナビゲーションでも再起動しないため、最初のページが冗長になった後に事前読み込みヒントが生成されます。
新しい動作
ASP.NET Core 11 以降では、ResourcePreloaderは、応答が強化されたナビゲーションでない場合にのみプリロード要素を出力します。 拡張ナビゲーションによってアクセスされたページは、フレームワークが以前に追加した暗黙的なプリロード ヒントを受け取らなくなりました。
初期ページ読み込み時の以前の動作 (拡張ナビゲーションが発生する前の最初の要求) は変更されません。 ユーザーが拡張ナビゲーションなしで移動するページ (ページ全体の再読み込みや外部ナビゲーションなど) も、プリロード ヒントを受け取ります。
破壊的変更の種類
この変更は 動作の変更です。
変更の理由
拡張ナビゲーション中の暗黙的なプリロード ヒントでは、WebAssembly ランタイムが再起動せず、DOM マージ ステップによって <link> 要素の順序が不安定になることが多いため、冗長なブラウザー プリロード要求が生成されました。 拡張ナビゲーションのヒントを削除すると、より予測可能なネットワーク動作が得られます。
詳細については、「 [Blazor] 拡張ナビゲーションのプリロードを無効にする (dotnet/aspnetcore #63544)」を参照してください。閉じた PR についてはコメントしないでください。 この変更に関するフィードバックがある場合は、dotnet/aspnetcore GitHub リポジトリで新しい問題を開きます。
推奨されるアクション
拡張ナビゲーション中に暗黙的なプリロード ヒントに依存していた場合は、プリロードする特定のリソースに対して明示的な <link rel="preload"> または <link rel="modulepreload"> タグを <HeadContent> に追加します。
<HeadContent>
<link rel="modulepreload" href="_content/MyLib/big-module.js" />
</HeadContent>
または、その場でのすばやいナビゲーションよりも事前読み込みのほうが重要である場合は、関連するリンクを拡張ナビゲーションの対象外にします。 詳細については、「 拡張ナビゲーションとフォーム処理」を参照してください。
影響を受ける API
None. パブリック API サーフェスは変更されません。 この変更は、Blazor サーバーサイドレンダリングによって実行される暗黙的なリソースのプリロードに影響します。
ASP.NET Core