我正在使用一个小型 Blazor Wasm 应用程序来学习 Web 编程。特别是带有 AspNetCore v3.2.0 和 Chrome v83.0.4103.116 的 Visual Studio Community 2019 v16.6.2。有时我对代码(JavaScript 和 Blazor)所做的更改在我运行调试器时不会应用,除非我执行硬刷新。我在 Chrome DevTools 的网络部分设置了“禁用缓存”,但它在调试 session 之间没有保持设置。每次调试时都必须进行硬刷新以防万一,这当然是一个很大的痛苦。知道在这些情况下我能做些什么来防止缓存吗?
最佳答案
简短的回答
在您的 开头index.html 文件,在任何 Blazor 初始化之前,编写一个清除 Blazor 缓存的 Javascript 方法调用:
<script type="text/javascript">
caches.delete("blazor-resources-/").then(function (e) {
console.log("'blazor-resources-/' cache deleted");
});
</script>
通过这样做,缓存存储将在每次页面加载时清除,就在 Blazor 初始化之前。完整答案
我认为最好根据上下文来控制它的行为。
对于 中的基本 if调试 或 发布 配置,假设您托管 Blazor WASM 申请 ASP.NET 核心 ,步骤如下:
@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>
改变:
endpoints.MapFallbackToFile("index.html");
到:endpoints.MapFallbackToPage("/_Host");
services.AddRazorPages(options => options.RootDirectory = "/Pages");
关于visual-studio - 如何在 Visual Studio Blazor Wasm 应用程序调试期间停止 Chrome 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62611521/