为什么在浏览器>开发工具>网络中看不到Blazor WebAssembly应用程序上加载了DLL和dotnet.wasm?

问题描述

我对认的VS2019(16.6.5)Blazor WebAssembly项目不满意。但是,当我查看启用了 disable Cache Chrome(或Firefox或Edge)Chrome开发人员工具[F12]>网络时,看不到加载太多了吗?

Blazor wasm

Dev工具>源中,我可以看到 dotnet.wasm 已经以某种方式加载。

dotnet.wasm in sources

通过阅读诸如this one之类的文章,我看到了显示DLL和wasm正在加载的屏幕截图。

Devb Tool Network on Blazor wasm

为什么我看不到?


编辑:好的,当从VS2019开始调试Blazor WebAssembly项目时,我成功地看到了只需要加载的DLL 。当我在不调试的情况下启动项目时,仍然获得与第一个屏幕快照相同的轻量级负载为什么?

解决方法

Blazor WASM在RTM 3.2版本发布(2020年5月)之前更改了加载行为,因此示例 prior 演示了旧的行为。

当Blazor WASM应用程序加载时,它会为每个DLL创建一个清单和校验和,并将其加载到blazor.boot.json

WASM network trace

Blazor代码将在浏览器的缓存存储中检查这些文件(以及校验和)。请注意,这与浏览器用于普通内容(例如, HTML,CSS等

如果不存在(第一次运行),则会加载它们。您可以在此处查看已加载的文件:

enter image description here

这些文件在第一次运行时加载。在以后的页面视图中,如果文件名和校验和匹配,即使您选择浏览器的“空缓存和硬重载”

,也不会重载

为什么?这是有道理的,因为诸如mscorlib.dll之类的文件不会由于应用程序重新编译而发生更改。这不是JavaScript,而是二进制文件。 SHA256校验和会验证它是否是同一文件。

但是,如果您进行编辑和重新编译,Blazor应用程序DLL将会更改。如果他们这样做,他们会被重新加载:

app change results in BlazorApp1.dll reloading

如果要强制完全重新加载,可以导航至浏览器缓存(在Chrome开发者工具的 Application 下),然后为您的网站选择Delete。