注释
此版本不是本文的最新版本。 有关当前版本,请参阅 本文的 .NET 10 版本。
警告
此版本的 ASP.NET Core 不再受支持。 有关详细信息,请参阅 .NET 和 .NET Core 支持策略。 有关当前版本,请参阅 本文的 .NET 10 版本。
运行时重新链接
有关运行时重新链接如何最大程度地减少应用的下载大小的信息,请参阅 ASP.NET 核心 Blazor WebAssembly 生成工具和预先 (AOT) 编译。
使用 System.Text.Json
Blazor JS互作实现依赖于System.Text.Json,这是一个高性能 JSON 序列化库,内存分配较低。 使用 System.Text.Json 不应该导致应用负载大小增加,超过添加一个或多个替代 JSON 库的情况。
有关迁移指南,请参阅如何从Newtonsoft.Json迁移到System.Text.Json。
中间语言 (IL) 修整
本部分仅适用于客户端 Blazor 方案。
从应用程序Blazor WebAssembly中移除未使用的程序集,可以通过删除应用程序二进制文件中未使用的代码来减少应用程序的大小。 有关详细信息,请参阅配置适用于 ASP.NET Core Blazor 的裁边器。
链接 Blazor WebAssembly 应用 可以通过剪裁应用的二进制文件中未使用的代码来减小应用的大小。 仅当使用 Release 配置进行生成时,才启用中间语言(IL)链接器。 为实现这一目标,请使用 dotnet publish 命令发布应用以进行部署,并将 -c|--configuration 选项设置为 Release:
dotnet publish -c Release
延迟加载程序集
本部分仅适用于客户端 Blazor 方案。
当路由需要程序集时,在运行时加载程序集。 有关详细信息,请参阅 ASP.NET Core Blazor WebAssembly中的延迟加载程序集。
压缩
本部分仅适用于 Blazor WebAssembly 应用。
发布 Blazor WebAssembly 应用时,将在发布过程中对输出内容进行静态压缩,从而减小应用的大小,并免去运行时压缩的开销。 Blazor 依赖服务器执行内容协商并提供静态压缩文件。
部署应用后,请验证应用是否提供压缩文件。 检查浏览器开发人员工具中的“网络”选项卡,并验证文件是否提供Content-Encoding: br(Brotli 压缩)或Content-Encoding: gz(Gzip 压缩)。 如果主机未提供压缩文件,请遵循托管和部署 ASP.NET Core 指南Blazor WebAssembly中的说明。
禁用未使用的功能
本部分仅适用于客户端 Blazor 方案。
Blazor WebAssembly运行时包括以下 .NET 功能,这些功能可以禁用以减小负载。
Blazor WebAssembly 承载以用户的文化格式显示值(如日期和货币)所需的全球化资源。 如果应用程序不需要本地化,您可以将其配置为支持不变文化,这基于en-US文化。 将 <InvariantGlobalization> MSBuild 属性设置为 true,并应用于应用项目文件(.csproj)中。
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
采用 不变全球化 只会使用不本地化的时区名称。 若要移除应用中的时区代码和数据,请在应用的项目文件(<InvariantTimezone>)中应用值为true的.csproj MSBuild 属性。
<PropertyGroup>
<InvariantTimezone>true</InvariantTimezone>
</PropertyGroup>
注释
<BlazorEnableTimeZoneSupport> 优先于早期的 <InvariantTimezone> 设置。 建议删除该 <BlazorEnableTimeZoneSupport> 设置。
包含数据文件以使时区信息正确。 如果应用不需要此功能,请考虑通过在应用的项目文件中将 MSBuild 属性设置为<BlazorEnableTimeZoneSupport>false禁用此功能:
<PropertyGroup>
<BlazorEnableTimeZoneSupport>false</BlazorEnableTimeZoneSupport>
</PropertyGroup>
包含排序规则信息,以确保诸如 StringComparison.InvariantCultureIgnoreCase 等 API 能够正确工作。 如果确定应用不需要排序数据,请考虑通过设置应用项目文件中的 MSBuild 属性来禁用它 BlazorWebAssemblyPreserveCollationDatafalse:
<PropertyGroup>
<BlazorWebAssemblyPreserveCollationData>false</BlazorWebAssemblyPreserveCollationData>
</PropertyGroup>