Skip to content

Commit bc09678

Browse files
committed
Introduce groups for preloading
1 parent 5c260be commit bc09678

File tree

3 files changed

+35
-7
lines changed

3 files changed

+35
-7
lines changed

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -332,13 +332,13 @@ private void AppendWebAssemblyPreloadHeaders()
332332
continue;
333333
}
334334

335-
// Use preloadrel to identify assets that should to be preloaded
335+
// Use preloadgroup=webassembly to identify assets that should to be preloaded
336336
string? header = null;
337337
foreach (var property in asset.Properties)
338338
{
339-
if (property.Name.Equals("preloadrel", StringComparison.OrdinalIgnoreCase))
339+
if (property.Name.Equals("preloadgroup", StringComparison.OrdinalIgnoreCase) && property.Value.Equals("webassembly", StringComparison.OrdinalIgnoreCase))
340340
{
341-
header = String.Concat($"<{asset.Url}>", "; rel=", property.Value);
341+
header = $"<{asset.Url}>";
342342
break;
343343
}
344344
}
@@ -351,7 +351,11 @@ private void AppendWebAssemblyPreloadHeaders()
351351
string? order = null;
352352
foreach (var property in asset.Properties)
353353
{
354-
if (property.Name.Equals("preloadas", StringComparison.OrdinalIgnoreCase))
354+
if (property.Name.Equals("preloadrel", StringComparison.OrdinalIgnoreCase))
355+
{
356+
header = String.Concat(header, "; rel=", property.Value);
357+
}
358+
else if (property.Name.Equals("preloadas", StringComparison.OrdinalIgnoreCase))
355359
{
356360
header = String.Concat(header, "; as=", property.Value);
357361
}

src/Components/Endpoints/test/EndpointHtmlRendererTest.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,26 @@ public async Task CanPreload_WebAssembly_ResourceAssets()
8888
new ResourceAssetProperty("preloadpriority", "high"),
8989
new ResourceAssetProperty("preloadcrossorigin", "anonymous"),
9090
new ResourceAssetProperty("integrity", "abcd"),
91-
new ResourceAssetProperty("preloadorder", "2")
91+
new ResourceAssetProperty("preloadorder", "2"),
92+
new ResourceAssetProperty("preloadgroup", "webassembly")
9293
]),
9394
new ResourceAsset("first.js", [
9495
new ResourceAssetProperty("preloadrel", "preload"),
9596
new ResourceAssetProperty("preloadas", "script"),
9697
new ResourceAssetProperty("preloadpriority", "high"),
9798
new ResourceAssetProperty("preloadcrossorigin", "anonymous"),
9899
new ResourceAssetProperty("integrity", "abcd"),
99-
new ResourceAssetProperty("preloadorder", "1")
100+
new ResourceAssetProperty("preloadorder", "1"),
101+
new ResourceAssetProperty("preloadgroup", "webassembly")
102+
]),
103+
new ResourceAsset("preload-nowebassembly.js", [
104+
new ResourceAssetProperty("preloadrel", "preload"),
105+
new ResourceAssetProperty("preloadas", "script"),
106+
new ResourceAssetProperty("preloadpriority", "high"),
107+
new ResourceAssetProperty("preloadcrossorigin", "anonymous"),
108+
new ResourceAssetProperty("integrity", "abcd"),
109+
new ResourceAssetProperty("preloadorder", "1"),
110+
new ResourceAssetProperty("preloadgroup", "abcd")
100111
]),
101112
new ResourceAsset("nopreload.js", [
102113
new ResourceAssetProperty("integrity", "abcd")

src/Shared/Components/ResourceCollectionResolver.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public ResourceAssetCollection ResolveResourceCollection()
4747
string? preloadPriority = null;
4848
string? preloadCrossorigin = null;
4949
string? preloadOrder = null;
50+
string? preloadGroup = null;
5051
#else
5152
string label = null;
5253
string integrity = null;
@@ -55,6 +56,7 @@ public ResourceAssetCollection ResolveResourceCollection()
5556
string preloadPriority = null;
5657
string preloadCrossorigin = null;
5758
string preloadOrder = null;
59+
string preloadGroup = null;
5860
#endif
5961

6062
// If there's a selector this means that this is an alternative representation for a resource, so skip it.
@@ -99,9 +101,14 @@ public ResourceAssetCollection ResolveResourceCollection()
99101
preloadOrder = property.Value;
100102
foundProperties++;
101103
}
104+
else if (property.Name.Equals("preloadgroup", StringComparison.OrdinalIgnoreCase))
105+
{
106+
preloadGroup = property.Value;
107+
foundProperties++;
108+
}
102109
}
103110

104-
AddResource(resources, descriptor, label, integrity, preloadRel, preloadAs, preloadPriority, preloadCrossorigin, preloadOrder, foundProperties);
111+
AddResource(resources, descriptor, label, integrity, preloadRel, preloadAs, preloadPriority, preloadCrossorigin, preloadOrder, preloadGroup, foundProperties);
105112
}
106113
}
107114

@@ -136,6 +143,7 @@ private static void AddResource(
136143
string? preloadPriority,
137144
string? preloadCrossorigin,
138145
string? preloadOrder,
146+
string? preloadGroup,
139147
#else
140148
string label,
141149
string integrity,
@@ -144,6 +152,7 @@ private static void AddResource(
144152
string preloadPriority,
145153
string preloadCrossorigin,
146154
string preloadOrder,
155+
string preloadGroup,
147156
#endif
148157
int foundProperties)
149158
{
@@ -179,6 +188,10 @@ private static void AddResource(
179188
{
180189
properties[index++] = new ResourceAssetProperty("preloadorder", preloadOrder);
181190
}
191+
if (preloadGroup != null)
192+
{
193+
properties[index++] = new ResourceAssetProperty("preloadgroup", preloadGroup);
194+
}
182195

183196
resources.Add(new ResourceAsset(descriptor.Route, properties));
184197
}

0 commit comments

Comments
 (0)