webpack-dev-server 需要永远加载包

webpack-dev-server takes forever to load the bundle

webpack-dev-server 大约需要一分钟时间重新加载网络应用程序。 bundle.js 是 4mb 左右 - 我知道这很大,但它是从本地服务器加载的,应该不会花那么长时间吧?这也不是重新编译的时候。这只是重新加载。因此,即使什么都没有改变,我只是在浏览器中触发刷新,加载包需要一分钟。

这可能是什么原因?或者这就是它通常的运作方式?如何解决 webpack-dev-server 中的此类问题?我想定位瓶颈。

首先回答实际问题 - - 这是通过 HTTP 加载该大小的文件需要多长时间。我们对此无能为力。如果有人知道如何加速实际加载过程(无缓存),请在评论中告诉我。

TL;DR

目前我知道的唯一解决方案是缓存。但是你需要确保你缓存了正确的东西。

可能会成为解决方案的随机内容

我个人在我的设置中有两个遗漏。微不足道,但对 check/fix 绝对至关重要。

注意: 如果您进行代码拆分,以下内容才有意义 - 不更改的第三方库应与您正在处理的文件分开加载(更多信息下面)。

  1. 我为打开的开发者工具禁用了缓存。我不记得为什么我一开始就启用了该功能,并且完全忘记了我所做的。所以事实证明这是一个非常糟糕的主意。确保您没有启用任何一项(确保该复选框未选中 )。

  2. 另一个大问题是我使用的 VSCode,特别是 Chrome Debugger plugin for VSCode 默认禁用缓存。因此,调试模式下的 web-app 开始缓慢加载。好消息是,有一个选项可以将其调回:disableNetworkCache(默认为 true

即使你缓存,如果你的包很大,最终缓存会失效,你将不得不等待新版本加载,除非你使用 code splitting 将该包拆分成几个独立的部分,这会在不同的时间失效,即使它们会失效,它们的加载速度也会比一个大转储快得多。

个人经验建议

首先,如果您出于某种原因被遗留问题 CRA 您需要升级,基本上每隔一个月您都没有这样做,这会使升级过程复杂化,无论如何,除非您是不打算再从事该项目。

如果您的项目已经到了升级根本不可行的阶段,因为更新的模块和插件带有新的要求,可能与您项目中的文件不兼容,您将不得不弹出。这听起来可能很疯狂,但最终可能会比没有它的情况下尝试这样做更痛苦。