Blazor 服务器强制缓存重新加载

Blazor server force a cache reload

我有一个网页,最初是作为检查了 PWA 的 Blazor WASM 项目启动的,由于初始加载时间,我决定将其更改为 Blazor 服务器项目。现在一切正常,除了在 WASM 项目时打开页面的桌面。他们完全忽略了服务器,只是 运行 原始网页,如果我执行 shift-control-r 新网页显示,但无论何时我返回它都会显示原始 WASM 页面。

有谁知道有什么方法可以让原来的 wasm 更新到新版本的客户端。我什至关闭了网络服务器,网页仍然在本地工作,就像它从未与服务器核对过一样。

谢谢, 蒂姆

您可以尝试将 server pre-rendering 用于 PWA,这可能有助于解决原来的速度问题,同时让已经拥有 PWA 的用户继续使用它。

在 Service Worker 中更新 PWA 版本并处理一些事件可以让您提示用户进行更新。坦率地说,如果他们有旧版本——我不确定如果他们不下载新的服务工作者,你能做些什么。我建议您看一下 this sample app 以了解执行此类自定义提示的一种方法。我有一个朋友不得不放弃整个应用程序并开始使用不同的主页,正是因为他们无法让老服务工作者删除客户端设备上的缓存。

我终于找到了对我有帮助的答案。如果你不需要 PWA,你可以删除它并且 Chrome(可能还有其他浏览器)应该停止依赖旧客户端,即使在删除缓存并完全重新加载之后也是如此。因为在完成此操作后,我的 Chrome 仍然重新加载它。对于我的应用程序,我不需要使用此缓存功能或能够将其作为应用程序安装。

我在这里找到了答案: Blazor Chrome caching issues

如何删除 PWA:

  1. 从 wwwroot 中删除以下文件:
/wwwroot/manifest.json
/wwwroot/service-worker.js
/wwwroot/service-worker.published.js
  1. 从 /wwwroot/index 中删除这一行。html
<script>navigator.serviceWorker.register('service-worker.js');</script>
  1. 从您的 csproj 文件中删除这些行
<ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest>
<ServiceWorker Include="wwwroot\service-worker.js" PublishedContent="wwwroot\service-worker.published.js" />

另外...为了真正摆脱 Chrome 中的应用程序,因为我已经以这种方式加载了它,所以我将其作为应用程序安装,然后卸载该应用程序并将其从 [=39] 中删除=].这最终让我摆脱了整个循环,Chrome 保留了应用程序。