Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当react应用程序中有新捆绑包可用时,如何自动重新加载js捆绑包?_Javascript_Reactjs_Webpack_.net Core_Service Worker - Fatal编程技术网

Javascript 当react应用程序中有新捆绑包可用时,如何自动重新加载js捆绑包?

Javascript 当react应用程序中有新捆绑包可用时,如何自动重新加载js捆绑包?,javascript,reactjs,webpack,.net-core,service-worker,Javascript,Reactjs,Webpack,.net Core,Service Worker,当我新建react应用程序时,会创建一个带有序列号的捆绑包,并将其包含在index.html(例如:main.350fc2cb.chunk.js)中,浏览器会缓存该捆绑包,并在请求时从缓存中获取它 当我进行任何更改并创建一个新包时,index.html将有一个新版本,因此浏览器可以正常工作,因为index.html现在请求不同的文件名 问题是,当用户已经打开站点的选项卡时,我在服务器上进行新更改并替换index.html时,没有任何东西可以告诉浏览器加载新的捆绑包,除非完成刷新(没有缓存) 是否

当我新建react应用程序时,会创建一个带有序列号的捆绑包,并将其包含在index.html(例如:main.350fc2cb.chunk.js)中,浏览器会缓存该捆绑包,并在请求时从缓存中获取它

当我进行任何更改并创建一个新包时,index.html将有一个新版本,因此浏览器可以正常工作,因为index.html现在请求不同的文件名

问题是,当用户已经打开站点的选项卡时,我在服务器上进行新更改并替换index.html时,没有任何东西可以告诉浏览器加载新的捆绑包,除非完成刷新(没有缓存)

是否有什么方法可以让应用程序知道是否有新内容并自动请求,或者至少告诉用户这样做

我在后端使用.NETCore,所以任何来自后端的解决方案都可以


我尝试使用create react应用程序中包含的serviceWorker来确定是否有新内容可用,但除非我打开新选项卡或刷新页面,否则它似乎不起作用,即使如此,加载新捆绑包仍需要使用无缓存刷新(CTRL+SHIFT+F5)。

这可能会有帮助吗@ChrisG我不想取消所有浏览器缓存,我仍然希望缓存捆绑包,因为它相当大,但我想知道是否有方法在选项卡已打开时检测新捆绑包,并对页面进行自动刷新。您可以向index.html添加代码,使用基本
fetch()定期检查当前应用程序版本
如果有新的,重新加载?也许这会有帮助@ChrisG我不想取消所有浏览器缓存,我仍然希望缓存捆绑包,因为它相当大,但我想知道是否有方法在选项卡已打开时检测新捆绑包,并对页面进行自动刷新。您可以向index.html添加代码,使用基本
fetch()定期检查当前应用程序版本
如果有新的,是否重新加载?