【发布时间】:2018-01-11 14:24:57
【问题描述】:
这是我在野外使用 Webpack 代码拆分时遇到的一个意外问题:想象一下这种情况:
- 用户加载一个带有 Webpack 代码拆分的 React 应用程序并加载了一些捆绑块
- 发生部署,用户可能从服务器接收到的任何未来块的内容都会更新(注意:在部署期间,以前的块会在服务器上被删除)
- 用户点击一个链接并加载一个新的路由,触发更多的捆绑块加载。除了这些新块与用户浏览器已经加载的块不兼容并且应用程序由于运行时错误而中断
如何防止这种情况发生?
一种可能的解决方案是维护多个版本化的块集,但我想知道大型应用程序是否使用更简单的解决方案。
如果使用preload-webpack-plugin,则可以预取所有块,但它们只会缓存一小段时间(在 Chrome 中为 5 分钟)。
【问题讨论】:
-
我和你有同样的考虑。你找到解决方案了吗?谢谢!
-
@JordanEnev 我们最终维护了多个版本的部署,这样旧的块就不会失效。
-
谢谢!如果我发现更简单的东西,我会写。
-
对此解决方案感兴趣。是否有可能让 webpack 加载器代码响应某种警报,要求用户重新加载?
-
只是简单的解决方案,我们可以在部署后通过 websocket 使用推送,并显示页面应该重新加载的通知
window.navigation.reload()或使用长轮询并从某个地方检查最新版本,例如,从最新index.html
标签: javascript reactjs deployment webpack code-splitting