首页 > 解决方案 > 如何减小aspnet/blazor编译的dll/wasm的大小?

问题描述

我注意到*.wasm编译的文件大小Rust是可以接受的。然而,一个最小的 HelloWorld 编译AspNet/Blazor将占用将近 2.8MB。

mono.wasm       1.75MB
mscorlib.dll    1.64MB
*.dll           ....

如果我理解正确的话,mono.wasm就是在浏览器中运行并运行我们编写的 dll 的 VM。这是否意味着无论我们做什么,我们都不能使文件大小小于 1.75MB?如果没有,有没有办法减少文件大小?

标签: monowebassemblyblazor

解决方案


是的,对于“Hello World”应用程序来说,2.8 MB 是相当大的有效负载。但是,Blazor 在很大程度上仍是一项实验性技术,尚未准备好投入生产使用。目前生成的输出如此之大的原因有很多:

您当前的应用程序在解释模式下运行,其中mono.wasm文件将 CLR 发送到浏览器,允许它执行您的 DLL。如本文所述,使用 Ahead of Time Compilation (AOT) 是一种更快、更有效的方法。这将允许编译器去除任何未使用的库函数,从而提供高度优化的输出。

WebAssembly 运行时本身的功能非常有限,未来版本将添加垃圾收集和 Blazor 可以直接使用的各种其他功能。目前mono.wasm包括它自己的垃圾收集器。

Blazor 项目本身有许多未解决的问题,描述了正在积极进行的各种优化。它已经执行了 tree-shaking 和其他各种优化,但是这种类型的工作需要时间。


推荐阅读