Blazor WebAsssembly 客户端应用程序不刷新并且不使用最新代码
Blazor WebAsssembly client app does not refresh and does not use the latest code
如何确保 Blazor 客户端应用程序的用户始终加载最新版本的代码?我现在必须指示他们在每次发布新版本时清除浏览器缓存。这阻碍了“尽早且经常发布”的方法,我简直不敢相信,如果不在启动时检查新版本(点击一次应用程序执行的操作),任何严肃的 Blazor 开发都是可能的。
我在 https://docs.microsoft.com/en-us/answers/questions/214424/blazor-wpa-not-updating.html
上找到了这个解决方案
/**
* Register Service Worker
*/
navigator.serviceWorker
.register('/***.js', { scope: '/' })
.then(() => {
console.log('Service Worker Registered');
});
This js file can contain a cache version like below.
const CACHE_VERSION = 1.0
但这对我来说太神秘了?我怎样才能像“for dummies”一样实施上述解决方案?
答案很简单(一旦你知道):
在 wwwroot
文件夹下的 index.html
中,您会发现:
<script>navigator.serviceWorker.register('service-worker.js');</script>
写在下面:
<script>navigator.serviceWorker.register('version.js');</script>
并在此文件夹中创建一个“version.js”文件,内容为:
const CACHE_VERSION = 1.0
每次您希望客户加载新版本时增加 1.0
值。
看起来像这样:
一旦您的客户设法清除缓存并加载包含此代码的版本,只需重新加载或关闭并重新启动浏览器即可激活新版本。
如何确保 Blazor 客户端应用程序的用户始终加载最新版本的代码?我现在必须指示他们在每次发布新版本时清除浏览器缓存。这阻碍了“尽早且经常发布”的方法,我简直不敢相信,如果不在启动时检查新版本(点击一次应用程序执行的操作),任何严肃的 Blazor 开发都是可能的。
我在 https://docs.microsoft.com/en-us/answers/questions/214424/blazor-wpa-not-updating.html
上找到了这个解决方案/**
* Register Service Worker
*/
navigator.serviceWorker
.register('/***.js', { scope: '/' })
.then(() => {
console.log('Service Worker Registered');
});
This js file can contain a cache version like below.
const CACHE_VERSION = 1.0
但这对我来说太神秘了?我怎样才能像“for dummies”一样实施上述解决方案?
答案很简单(一旦你知道):
在 wwwroot
文件夹下的 index.html
中,您会发现:
<script>navigator.serviceWorker.register('service-worker.js');</script>
写在下面:
<script>navigator.serviceWorker.register('version.js');</script>
并在此文件夹中创建一个“version.js”文件,内容为:
const CACHE_VERSION = 1.0
每次您希望客户加载新版本时增加 1.0
值。
看起来像这样:
一旦您的客户设法清除缓存并加载包含此代码的版本,只需重新加载或关闭并重新启动浏览器即可激活新版本。