我正在使用创建反应应用程序和服务工作者。但是,有时当我构建新版本时,仍然从服务工作者加载了一些 js 块,这是不应该加载的?它不是加载js文件,而是实际加载一个html。清除缓存并重新加载页面后,一切正常。
-
我没有在 Nginx 上缓存服务工作者。每次刷新页面时,服务工作进程文件都是从服务器加载的。
-
我正在使用反应加载
如何解决此问题?任何帮助将不胜感激。
正如您react-loadable
提到的,我假设您在应用程序中使用异步组件加载。如果这是真的,你可能面临和我一样的问题。
每当交付新版本时,都会安装新的服务工作进程。默认情况下,在会话完成(所有选项卡/浏览器关闭(之前,它不会被激活。为了立即激活它,skipWaiting
参数使用并设置sw-precache-webpack-plugin
create-react-app
webpack 配置。所以现在,旧的服务工作进程和所有相关的缓存文件将被删除,因为新的服务工作进程正在承担责任。这在大多数情况下很好,但在我们处理异步组件加载时就不行了。在这种情况下,我们不希望删除旧块,因为我们的应用程序引用了它们。为此,我们需要在sw-precache-webpack-plugin
中设置skipWaiting: false
.
更多信息可以在此线程中找到。