如何清除浏览器中的Blazor WebAssembly DLL文件?

11
我在 https://localhost:44381 上意外地同时运行了两个 Blazor WebAssembly 应用程序,然后出现了混乱。其中一个应用程序发生错误,因为它试图并未能从另一个示例应用程序中加载 DLL。我尝试打开浏览器的开发工具(Application > Clear storage),但没有帮助。我该如何彻底清除浏览器中 Blazor WebAssembly 应用程序的 DLL,以便我可以重新开始?
4个回答

17

Blazor WASM应用程序从版本3.1开始会下载一个名为blazor.boot.json的文件,其中列出了程序集及其sha256哈希值以指示版本。这些程序集现在被下载到浏览器的应用程序缓存存储中(请参见下面的示例)。

DevTools showing Cache Storage area

应用程序 -> 清除存储应该是有效的,请检查应用程序 -> 清除存储页面上是否选择了应用程序缓存

Chrome Clear Storage page

使用清空缓存并强制刷新不会清除此缓存,但会重新加载blazor.boot.json文件,如果缓存的文件已更改(哈希值不同),则它们应该会重新加载。

您还可以从Cache Storage视图中删除单个程序集-右键单击即可删除它们。当您刷新应用程序时,Blazor将下载最新版本。


7

Chrome 和新版 Edge 按 F12 键打开开发者工具。在工具栏打开的情况下,在浏览器上右键单击刷新页面图标,选择“清空缓存并强制刷新”。这是清除所有内容(包括图标和 PWA 设置)的唯一方法。


1
这两个选项都对我没用。我通过使用“删除现有文件”选项将应用程序发布到本地文件夹中来解决问题,然后删除服务器上部署文件夹中的所有文件并复制新发布的文件。 - Brad Irby
4
这个答案没有清除缓存的DLL文件,需要按照其他答案中描述的从应用程序缓存中删除它们。 - nh43de
这个可以运行,但是它的预兆令人不安。不能指望用户这样做。你知道自动化的方法吗? - InteXX
@InteXX用户在WASM应用程序更新时不需要做任何事情。更新您的代码将更改blazor.boot.json中的SHA256哈希值:请参见此处的示例,因为您的应用程序DLL具有新的签名。 blazor.webassembly.js中的Blazor引导JS将获取新的DLL并将其放入应用程序缓存中。任何未更改的DLL(例如框架库)都将从缓存中重新加载。 - Quango
@Quango — 谢谢你提供的链接和描述。我正在慢慢攀登这个 Blazor 的高峰,每一个小小的帮助都对我有所裨益。你描述的行为就是我所看到的,除非应用程序抛出未处理的异常(正如我在这里所讨论的那样)。在这种情况下,构建/重新构建应用程序没有任何效果;我无法获取更新后的代码,直到我像这个答案中所描述的那样清除浏览器缓存。 - InteXX
显示剩余5条评论

3

只需按下Ctrl+F5,即可清除缓存并重新获取文件。


由于某些原因,这在开发中并不总是有效。我必须多次执行才能使其真正刷新 :( - Sylvain Gantois

2

1
这太完美了。感谢您发布这个。它可以很好地与客户端离线文件(通过serviceworker提供)配合使用,以避免双重缓存。 - Sean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接