Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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
Java 如何防止index.html被缓存_Java_Reactjs_Spring_Spring Boot_Browser Cache - Fatal编程技术网

Java 如何防止index.html被缓存

Java 如何防止index.html被缓存,java,reactjs,spring,spring-boot,browser-cache,Java,Reactjs,Spring,Spring Boot,Browser Cache,我有一个带有React前端的Spring启动应用程序。所有这些都用gradle绑定到一个*.jar文件中 React前端的生产包位于src/main/resources/static文件夹中。在生产环境中,*.jar文件位于BOOT-INF/classes/static文件夹中。此静态文件夹位于index.html中,另一个静态文件夹位于媒体、js和css文件夹中 我试图解决的问题是,浏览器正在缓存主index.html文件。在这个索引中,捆绑包的所有哈希都是正确的,但是索引本身并不总是从服务器

我有一个带有React前端的Spring启动应用程序。所有这些都用gradle绑定到一个*.jar文件中

React前端的生产包位于src/main/resources/static文件夹中。在生产环境中,*.jar文件位于BOOT-INF/classes/static文件夹中。此静态文件夹位于index.html中,另一个静态文件夹位于媒体、js和css文件夹中

我试图解决的问题是,浏览器正在缓存主index.html文件。在这个索引中,捆绑包的所有哈希都是正确的,但是索引本身并不总是从服务器请求的,而是从浏览器缓存请求的

我尝试了以下方法来防止缓存:

@Configuration
public class BaseConfig implements WebMvcConfigurer {
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/")
            .addResourceLocations("classpath:/static/index.html")
            .setCacheControl(CacheControl.maxAge(0, TimeUnit.SECONDS).mustRevalidate())
            .setCacheControl(CacheControl.noCache())
            .setCacheControl(CacheControl.noStore())
            .resourceChain(true)
            .addResolver(new PathResourceResolver());
    }
}
在我的一个控制器中:

@GetMapping("/index.html")
public void getIndex(HttpServletResponse response) {
    response.setHeader(HttpHeaders.CACHE_CONTROL, "no-cache, no-store, max-age=0, must-revalidate");
}
但是没有任何运气。这是来自服务器的我的响应标题:

我假设每次按下f5键(刷新页面),都应该从服务器加载一个新的index.html和一个新的散列。但事实并非如此。即使应用程序没有在服务器上运行,旧的index.html仍然会从浏览器返回,整个React应用程序都会在浏览器中启动

如何在每次按f5键或打开“新浏览器”选项卡时强制浏览器加载index.html


谢谢您的回答。

这是我的错误,问题是注册的React ServiceWorker,而不是错误的Spring引导配置。

这是我的错误,问题是注册的React ServiceWorker,而不是错误的Spring引导配置