我有一个 Blazor SPA,已经发布到一个 Webhotel 上的 IIS。我的问题是 Chrome 会缓存我的 Blazor 程序集,无论我如何重新部署,我仍然得到旧的 DLL。我可以通过启动一个新的干净的 Chrome 并使用 chrome --disable-application-cache --incognito 命令来获取最新的 DLL,但我应该如何正确地解决这个问题呢?
我有一个 Blazor SPA,已经发布到一个 Webhotel 上的 IIS。我的问题是 Chrome 会缓存我的 Blazor 程序集,无论我如何重新部署,我仍然得到旧的 DLL。我可以通过启动一个新的干净的 Chrome 并使用 chrome --disable-application-cache --incognito 命令来获取最新的 DLL,但我应该如何正确地解决这个问题呢?
如果您不需要PWA功能,则以下方法有助于解决问题。
我开始使用PWA(以防以后需要),但实际上在简单浏览时就会导致此问题。试图向service-worker.published.js添加注释或版本控制,但这并没有帮助。我正在使用Blazor版本3.2.1。
通过使用PWA,在浏览器中检查缓存时,我确实看到了最新的service-worker.published.js出现,并且新的离线缓存也已被下载。但是由于某种我无法理解的原因,浏览器仍在使用较旧的缓存。
要删除PWA:
/wwwroot/manifest.json
/wwwroot/service-worker.js
/wwwroot/service-worker.published.js
<script>navigator.serviceWorker.register('service-worker.js');</script>
从你的csproj文件中删除这些行。<ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest>
<ServiceWorker Include="wwwroot\service-worker.js" PublishedContent="wwwroot\service-worker.published.js" />
就像你平常做的一样。但当然还有其他方法。