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

Why I don't see DLLs and dotnet.wasm being loaded on a Blazor WebAssembly app in Browser > Dev Tools > Network?

我正在摆弄默认的 VS2019 (16.6.5) Blazor WebAssembly 项目。但是,当我查看 Chrome(或 Firefox 或 Edge)> 开发人员工具 [F12] > 网络,并启用 Disable Cache 时,我没有看到太多加载?

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

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

为什么我看不到?


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

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

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

中加载

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

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

这些文件在第一个 运行 上加载。在以后的页面视图中,如果文件名和校验和匹配,它不会被重新加载 即使您 select 浏览器的 “清空缓存和硬重新加载”

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

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

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