如何修复 Chrome 内存保护程序打开时 React 构建文件导致 404?

How to fix React build files result in 404 when Chrome memory saver is turned on?

提问人:Vishal Tiwari 提问时间:11/9/2023 更新时间:11/9/2023 访问量:28

问:

我有一个PHP Codeigniter后端,带有页面的视图模板。但是,有些代码是用 React 编写的,其构建文件存储在 .该菜单是用 React 编写的,并在所有页面中使用。要在使用 PHP 的服务器端渲染的页面上使用它,所有页面上都有一个从 PHP 渲染的空 div(带有 id=),并且 react 条目 js 文件编写如下htdocs/js/reactBuilds"forMenu"

ReactDOM.render(<MenuComponent/>, document.getElementById("forMenu"));

wepack 的模板文件是空的,所以 webpack 只是将菜单构建文件的所有脚本标签填充到该 HTML 模板中,然后我们在 PHP 中加载该 HTML 文件

include(__DIR__."htdocs/js/reactBuilds/menu.html");

我现在面临的问题是 Chromium 最近添加了一个内存保护程序功能,我不确定它是如何工作的,但我猜它会从内存中丢弃 *.js、*.css 或 *.img 文件等资产,但使页面的 HTML 文件长时间处于非活动状态,以便它可以在页面变为活动状态时取回资产。但是,在我的某些情况下,当用户在我的网站上处于非活动状态的时间太长时,并且在此期间,如果菜单代码发生了一些更改,更改了服务器上构建的 js 文件名中的哈希值,并且当用户返回到非活动页面时,它会尝试获取名称中存在的旧哈希值的旧 js 文件,从而导致 404 来自服务器(在 webpack 配置中使用 clean-webpack-plugin,删除旧的构建文件),它使菜单不被获取和呈现。

我认为我们可以修复它的一种方法是修改我的 webpack 配置以使用 HTMLWebpackPlugin 将 onerror 属性添加到构建的脚本标签中,以便在出错时使用 javascript 重新加载页面。

有没有其他更好的方法可以处理它?

javascript php reactjs 谷歌浏览器 webpack

评论


答: 暂无答案