mono - 如何减小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?如果没有,有没有办法减少文件大小?
解决方案
是的,对于“Hello World”应用程序来说,2.8 MB 是相当大的有效负载。但是,Blazor 在很大程度上仍是一项实验性技术,尚未准备好投入生产使用。目前生成的输出如此之大的原因有很多:
您当前的应用程序在解释模式下运行,其中mono.wasm
文件将 CLR 发送到浏览器,允许它执行您的 DLL。如本文所述,使用 Ahead of Time Compilation (AOT) 是一种更快、更有效的方法。这将允许编译器去除任何未使用的库函数,从而提供高度优化的输出。
WebAssembly 运行时本身的功能非常有限,未来版本将添加垃圾收集和 Blazor 可以直接使用的各种其他功能。目前mono.wasm
包括它自己的垃圾收集器。
Blazor 项目本身有许多未解决的问题,描述了正在积极进行的各种优化。它已经执行了 tree-shaking 和其他各种优化,但是这种类型的工作需要时间。
推荐阅读
- php - 浏览器重新启动时删除 Httponly Cookie
- c# - 有没有一种简单的方法可以摆脱这个 IF 循环?
- json - 解决这个简单的(?)JSONPath
- ios - muteLocalVideoStream 没有将agora中的视频静音
- html - 在不使用 CSS 位置的情况下重叠 PNG 图像:相对
- c# - 如何修复 OCR 的倾斜图像?
- java - 使用 iText 读取图像签名流/对象..是黑色背景和白色前景,如何反转
- php - 我想对 Yii2 中上传图片的字段进行验证
- reactjs - 由于 CORS,AWS Lambda 函数随机开始阻止我的请求
- django - 带有序列化程序 Django 3.1 的异步视图