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