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