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

Pat*_*eam 11 .net webassembly blazor

我正在摆弄默认的 VS2019 (16.6.5) Blazor WebAssembly 项目。但是,当我查看Chrome(或 Firefox 或 Edge)> Developer Tools [F12] > network并启用Disable Cache 时,我没有看到加载太多内容?

Blazor wasm

Dev Tool > Sources 中,我可以看到dotnet.wasm已以某种方式加载。

来源中的 dotnet.wasm

通过阅读一些像这样的文章,我看到了显示 DLL 和 wasm 正在加载的屏幕截图。

Blazor wasm 上的 Devb 工具网络

为什么我看不到?


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

Qua*_*ngo 20

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

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

WASM 网络跟踪

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

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

在此处输入图片说明

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

为什么?这是有道理的,因为像这样的文件mscorlib.dll不会因应用程序重新编译而改变。这不是 JavaScript,而是二进制文件。SHA256 校验和验证它是同一个文件。

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

应用程序更改导致 BlazorApp1.dll 重新加载

如果您想强制完全重新加载,您可以导航到浏览器缓存(在 Chrome 开发人员工具中的应用程序下),然后为您的站点选择删除。