破坏webpack中该高速缓存仍然需要软重新加载

nbysray5  于 2022-11-13  发布在  Webpack
关注(0)|答案(1)|浏览(228)

我最近配置了Webpack(版本4),将bundle分成三个部分(bundle、runtime和vendor),并在每个文件名的开头附加一个hash,这样浏览器就可以感觉到其中的变化。我还用HtmlWebpackPlugin更新了HTML引用。
这似乎是工作,但不完全,让我解释一下。在我这样做之前,每次部署后都需要硬重新加载,以便看到新的变化,这已经不需要了。
现在的问题是,当你在第一次部署后加载Web应用程序时,它仍然会显示旧版本,只有当你软重新加载网页时,它才会显示新的更改。
我想知道的是,有没有什么方法可以摆脱这种行为,以便每当部署完成,您加载的Web应用程序的变化立即显示,而不需要刷新一次?
提前感谢!

mec1mxoz

mec1mxoz1#

您可以在包的导入中附加一个随机的查询字符串,比如每次都会生成的src="bundle.js?nocache=12345"
这可以防止浏览器缓存您的代码,并且不需要您更改包名(这很方便)。
如果你不想每次都加载新的包,即使你没有发布任何东西,你也应该在某个地方保留版本号,并将其附加到包导入的查询字符串中。
不过,你目前的实现基本上也是这样做的。当你打开web应用程序时,它应该是一个新的非缓存包。我不认为有一种方法可以让浏览器检测javascript中的变化并刷新导入的脚本,除非你正在使用像webpack-dev-server(热加载)这样的东西,它可以为你做这些,但这只是开发方便。

相关问题