gpt4 book ai didi

visual-studio - 如何在 Visual Studio Blazor Wasm 应用程序调试期间停止 Chrome 缓存

转载 作者:行者123 更新时间:2023-12-03 23:06:05 30 4
gpt4 key购买 nike

我正在使用一个小型 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 核心 ,步骤如下:
  • 复制您的 index.html 来自您的 的文件客户 WASM 您的 上的项目服务器 项目,在 您可能拥有的文件夹。就我而言,我已将其复制到 ./Pages/
  • 将文件重命名为 _Host.cshtml 或者适合你的东西。
  • 打开这个新文件。如果此页面来自路由上下文,我们现在将在其中声明这是根页面,我们将添加我们的 清除缓存 逻辑取决于我们实际上在 Debug模式或不。您的文件内容可能如下所示:

  • @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>

  • 现在在您的启动.cs 文件在您的服务器 项目:
    改变:
    endpoints.MapFallbackToFile("index.html");
    到:
    endpoints.MapFallbackToPage("/_Host");
  • 如果它不起作用,您可能必须为 指定根搜索路径 Razor 意见 .在 配置服务 , 更改 添加RazorPages 到适合您当前配置的内容以找到您的起始 View :
    services.AddRazorPages(options => options.RootDirectory = "/Pages");
  • 就是这样 ! .如果一切顺利,您的 Blazor WASM 索引页面现在将是启动时的 CSHTML 页面,并且因为我们有条件地注入(inject)清除缓存代码,缓存将在每次页面加载时被清除,但当应用程序将不会出现该行为发布或内置 发布 配置模式。
  • 关于visual-studio - 如何在 Visual Studio Blazor Wasm 应用程序调试期间停止 Chrome 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62611521/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com