Skip to content

Commit a813ad4

Browse files
authored
[Blazor] Disable preloading for enhanced navigation (#63544)
1 parent c821481 commit a813ad4

File tree

3 files changed

+6
-10
lines changed

3 files changed

+6
-10
lines changed

src/Components/Endpoints/src/Rendering/EndpointHtmlRenderer.Streaming.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ private void WriteComponentHtml(int componentId, TextWriter output, bool allowBo
324324
}
325325
}
326326

327-
private static bool IsProgressivelyEnhancedNavigation(HttpRequest request)
327+
internal static bool IsProgressivelyEnhancedNavigation(HttpRequest request)
328328
{
329329
// For enhanced nav, the Blazor JS code controls the "accept" header precisely, so we can be very specific about the format
330330
var accept = request.Headers.Accept;

src/Components/Endpoints/src/Rendering/SSRRenderModeBoundary.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ public Task SetParametersAsync(ParameterView parameters)
124124

125125
private void PreloadWebAssemblyAssets()
126126
{
127+
if (EndpointHtmlRenderer.IsProgressivelyEnhancedNavigation(_httpContext.Request))
128+
{
129+
return;
130+
}
131+
127132
var preloads = _httpContext.GetEndpoint()?.Metadata.GetMetadata<ResourcePreloadCollection>();
128133
if (preloads != null && preloads.TryGetAssets("webassembly", out var preloadAssets))
129134
{

src/Components/Web.JS/src/Rendering/DomMerging/DomSync.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -308,11 +308,6 @@ function domNodeComparer(a: Node, b: Node): UpdateCost {
308308
return UpdateCost.Infinite;
309309
}
310310

311-
// Always treat "preloads" as new elements.
312-
if (isPreloadElement(a as Element) || isPreloadElement(b as Element)) {
313-
return UpdateCost.Infinite;
314-
}
315-
316311
return UpdateCost.None;
317312
case Node.DOCUMENT_TYPE_NODE:
318313
// It's invalid to insert or delete doctype, and we have no use case for doing that. So just skip such
@@ -324,10 +319,6 @@ function domNodeComparer(a: Node, b: Node): UpdateCost {
324319
}
325320
}
326321

327-
function isPreloadElement(el: Element): boolean {
328-
return el.tagName === 'LINK' && el.attributes.getNamedItem('rel')?.value === 'preload';
329-
}
330-
331322
function upgradeComponentCommentsToLogicalRootComments(root: Node): ComponentDescriptor[] {
332323
const serverDescriptors = discoverComponents(root, 'server') as ServerComponentDescriptor[];
333324
const webAssemblyDescriptors = discoverComponents(root, 'webassembly') as WebAssemblyComponentDescriptor[];

0 commit comments

Comments
 (0)