我正在使用一个小型 Blazor Wasm 应用程序来学习 Web 编程。 特别是带有 AspNetCore v3.2.0 和 Chrome v83.0.4103.116 的 Visual Studio Community 2019 v16.6.2。 有时,当我运行调试器时,我对代码(JavaScript 和 Blazor)所做的更改不会应用,除非我执行硬刷新。 我已在 Chrome DevTools 的网络部分设置“禁用缓存”,但在调试会话之间它不会保持设置状态。 每次调试时都必须进行硬刷新以防万一,这当然是一个很大的痛苦。 知道在这种情况下我可以做什么来防止缓存吗?
在 index.html 文件的开头,在任何 Blazor 初始化之前,编写一个清除 Blazor 缓存的 Javascript 方法调用:
<script type="text/javascript">
caches.delete("blazor-resources-/").then(function (e) {
console.log("'blazor-resources-/' cache deleted");
});
</script>
通过执行此操作,缓存存储将在每次页面加载时(即 Blazor 初始化之前)被清除。
我认为最好根据上下文来控制它的行为。 对于 Debug 或 Release 配置中的基本情况,假设您在 ASP.NET Core 上托管 Blazor WASM 应用程序,请执行以下步骤:
@page "/"
@{
Layout = ""; //Force no Layout
bool clearCache = false;
#if DEBUG
clearCache = true;
#endif
}
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>MyProject</title>
<base href="/" />
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link href="css/app.css" rel="stylesheet" />
<link href="Beeworking.Client.styles.css" rel="stylesheet" />
</head>
<body>
<div id="app">Loading...</div>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
@if (clearCache)
{
<script type="text/javascript">
caches.delete("blazor-resources-/").then(function (e) {
console.log("'blazor-resources-/' cache deleted");
});
</script>
}
<script src="_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js"></script>
<script src="_framework/blazor.webassembly.js"></script>
</body>
</html>
现在在
Server 文件中:
变化:
endpoints.MapFallbackToFile("index.html");
致:
endpoints.MapFallbackToPage("/_Host");
如果不起作用,您可能必须指定Razor 视图
中,将 AddRazorPages 更改为适合当前配置的内容以查找起始视图:
services.AddRazorPages(options => options.RootDirectory = "/Pages");
配置模式发布或构建。
{ “cacheBootResources”:
假...
清除客户端浏览器上的缓存。
有一种手动方式: Shift + F5。